如何使用Spring/Roo对POST请求中的特殊字符进行编码

3

我在使用Spring/Roo作为应用程序服务器,并且需要能够发布一些特殊字符,特别是像日元符号或欧元符号之类的字符。当我在服务器上接收这些字符并在控制台中显示它们时,它们会显示为“?”。如何正确编码和接收它们?

2个回答

6

请尝试将 src/main/resources/META-INF/spring/database.properties 配置为以下内容:

database.url=jdbc:mysql://[YOUR_DB_SERVER]:3306/[YOUR_DB_NAME]?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8

3
这里有几个可能的故障点。
首先,我会检查控制台是否支持相关字符:
- 如果JVM使用的默认编码不支持字符,则System.out会将其转换为问号。 - 如果控制台字体不支持字符,则无法正确呈现它们。 - 如果控制台使用与System.out编码不同的编码对字节进行解码,则字符将无法正确显示。
不要尝试直接打印字符,而是将其强制转换为int并打印十六进制值,然后将该值与Unicode charts进行比较。
不正确的转换可能会在浏览器和服务器之间发生。理想情况下,服务器应该使用UTF-8进行编码和解码。如果浏览器在对数据进行编码时使用的编码不支持字符,则它们将被丢失地编码; 浏览器通常基于服务器发送的编码来选择编码以进行GET请求(或更少见地从表单属性)。检查发送数据的Accept-Charset标头(您可以使用类似FirebugFiddler的工具进行此操作)。我不知道Roo的任何信息,但肯定有一些机制可以配置编码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接