在我的 Spring MVC 测试(UTF-8 编码)中,我们发现:
this.mockMvc = MockMvcBuilders.webAppContextSetup(context).apply(springSecurity())
.apply(documentationConfiguration(restDocumentation)
.snippets().withEncoding("UTF-8")) // default
.build();
...
myRequestDTO.setValue("Größe");
ResultActions action = this.mockMvc
.perform(post("/my-service")
.content(jacksonObjectMapper.writeValueAsString(myRequestDTO))
...
action.andDo(document("docs"));
asciidoctor 文件包含
HTTP Request
include::{snippets}/docs/http-request.adoc[]
在我渲染它并在我的 Firefox 浏览器中打开生成的 HTML 文件(也是 UTF-8 编码)后,我发现
HTTP Request
POST /my-service HTTP/1.1
...
Größe
特殊字符如何正确显示?
最佳答案
这里的根本问题是将请求的内容从 byte[]
转换为字符串。 Spring REST Docs 使用 Content-Type
header 的 charset
属性来确定创建 String< 时应使用的
。如果没有 Charset
/Content-Type
header 或其值没有 charset
属性,则使用 JVM 的默认 Charset
(由于调用new String(bytes)
)。
有两种方法可以避免特殊字符的损坏:
- 在请求的
Content-Type
header 中指定字符集属性。例如,使用text/plain;charset=UTF-8
而不是text/plain
。 - 通过设置
file.encoding
系统属性来配置 JVM 的默认Charset
。例如,-Dfile.encoding=UTF8
。
关于java - Spring REST 文档 : special characters are not shown correctly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35359141/