1

我有一个基于 Spring MVC 的 Java webapp。我有一些数据要以日文字体显示。我做了一些在线研究,发现 UTF-8 是我需要的字符集编码。我将以下行添加到我的应用程序中。它所做的只是将字符集编码添加到响应标头。

 response.setCharacterEncoding("UTF-8");

当我在 Windows 7 上测试时,日文字体正确显示。

当我在 Unix 机器上运行相同的 war 文件时,我只看到这些字符: ��� 和 numbers if any 。我检查了 Chrome 调试器中的响应标头,我仍然看到 UTF-8 编码。

我在标题信息中看到的唯一区别是 Windows 的服务器是 Apache-Coyote/1.1,而 unix 上的服务器是 apache。

有人可以建议我还需要检查什么吗?

4

1 回答 1

2

问题可能是如何创建字符串。它是从文件中读取的吗?

如果是这样,则文件本身具有编码,您可能正在根据默认平台编码读取它。如果文件采用一种编码,但您以另一种编码读取,则字符串中的文本一开始就会不正确。

使用调试/记录的快速检查是字符串的长度。如果它在 Windows 上报告一个长度而在 Unix 上报告另一个长度,那么在生成字符串时可能存在编码错误。例如,当 UTF-8 中的一个字符被解释为 ISO-8859 时,您会看到如下内容:-€“</p>

在这种情况下,您希望字符串的长度为 1,但它的长度为 3。如果它嵌入到其他文本中,您会看到长度差异为 2,即使文本应该是相同。

于 2013-03-25T15:03:27.063 回答