【发布时间】:2010-04-09 16:37:36
【问题描述】:
我正在使用 Spring/Roo 作为应用服务器,并且需要能够发布一些特殊字符。具体来说,像日元符号或欧元符号之类的字符。当我在服务器上收到这些字符并在控制台中显示它们时,它们显示为“?”。如何正确编码和接收它们?
【问题讨论】:
标签: java url encoding post special-characters
我正在使用 Spring/Roo 作为应用服务器,并且需要能够发布一些特殊字符。具体来说,像日元符号或欧元符号之类的字符。当我在服务器上收到这些字符并在控制台中显示它们时,它们显示为“?”。如何正确编码和接收它们?
【问题讨论】:
标签: java url encoding post special-characters
尝试将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
【讨论】:
这里有几个可能的故障点。
首先,我会检查控制台是否支持相关字符:
System.out转成问号
System.out 不同的编码解码字节,则字符将无法正确显示不要尝试将字符打印为文字,而是转换为 int 并打印十六进制值 - 然后对照 Unicode charts 检查该值。
浏览器和服务器之间也可能发生有损或不正确的转换。理想情况下,服务器应该使用 UTF-8 进行编码和解码。如果浏览器对数据进行编码时使用的编码方式不支持字符,则会进行有损编码;浏览器通常会根据服务器为 GET 请求发送的编码(或者很少来自form attribute)来选择编码。检查与您的数据一起发送的Accept-Charset header(您可以使用Firebug 或Fiddler 之类的东西来执行此操作)。我对Roo一无所知,但肯定有一些机制可以配置编码。
【讨论】: