【发布时间】:2012-10-15 23:07:02
【问题描述】:
我在 Java 中遇到文字字符串的字符集问题。
如下图所示,我有一个名为 TITULO 的静态对象,带有一个文字字符串常量参数“Título”。当我运行程序时,这个字符串被读作“TÃ-tulo”。我不知道为什么。
我在 Eclipse 项目属性窗口和 Tomcat 设置中探索了字符集设置,但它们都使用 UTF-8 作为选项。
我正在运行 Tomcat 7、Eclipse Helios 和 Windows SO。
谁能帮我解决这个问题?
【问题讨论】:
-
似乎控制台设置为其他编码,可能是 cp1252 或 latin1。
-
将“this.id = id”替换为“this.id = TITULO”。现在 this.id 有 7 个字符还是 6 个字符。
-
@DanielFischer 不一定是控制台,但也许 Eclipse 通常使用错误的字符集?如果让 JVM 确定字符串的大小会怎样?执行
int len = id.length();并查看len在调试器中的值。可能是 JVM 编码不匹配。当您调试时,此信息通过套接字传输,所以也许 Eclipse 正在尝试使用与 Tomcat 不同的编码来确定它?除此之外,我没有任何线索。 :3 -
谢谢@DanielFischer。当我添加
int len=id.length()进行调试时,我意识到正在运行的代码与我当前在编辑器中的代码不同。我认为 Tomcat 正在运行一个非常古老的编译代码。我尝试清理所有项目和 Tomcat 目录,但不起作用。
标签: java string character-encoding