我在Java中使用文字字符串时遇到字符集问题。Java文字字符串:运行时错误的字符集
正如你可以在下面的图片看到的,我有一个名为TITULO的静态对象,它带有一个字符串常量参数“Título”。当我运行程序时,这个字符串被当作“T-tulo”。我不知道为什么。
我在探索Eclipse项目属性窗口和Tomcat设置的字符集设置,但所有的人都用UTF-8作为一个选项。
我正在运行Tomcat 7,Eclipse Helios和Windows SO。
任何人都可以帮助我解决这个问题吗?
我在Java中使用文字字符串时遇到字符集问题。Java文字字符串:运行时错误的字符集
正如你可以在下面的图片看到的,我有一个名为TITULO的静态对象,它带有一个字符串常量参数“Título”。当我运行程序时,这个字符串被当作“T-tulo”。我不知道为什么。
我在探索Eclipse项目属性窗口和Tomcat设置的字符集设置,但所有的人都用UTF-8作为一个选项。
我正在运行Tomcat 7,Eclipse Helios和Windows SO。
任何人都可以帮助我解决这个问题吗?
是在eclipse编辑器的代码Tomcat的设置的URIEncoding为UTF-8是不一样的Tomcat正在执行的代码。
我在/ target文件夹中找到了一个.war文件。我删除了这个战争文件,并工作! tomcat正在运行这个旧的war文件中的类。
我最近已将这个正在运行的eclipse项目转换为maven项目。我可能在创建这个war文件的这个过程中执行了'mvn package'。
非常感谢所有人的帮助,我发现了这个解决方案。
我相信你正在查找的字符串(this.id)实际上并不是静态常量字符串Titulo。
在代码中的某处,您正在读取正确的unicode字符串Titulo,将其转换为字节数组,然后将其转换回String并将其传递给Style的构造函数。该字符串在转换过程中被损坏。除非您显示调用Style的构造函数的代码的堆栈跟踪,否则不能多说。
是的。在我更改我的代码以测试@Brian建议后,现在我知道我在编辑器中的代码不是正在运行的代码。我正在寻找这个不好的代码。 –
您可以尝试在server.xml
<Connector port="8090" URIEncoding="UTF-8"/>
我试过了。但不起作用。新信息:我已将eclipse项目更改为maven项目。我运行了'mvn eclipse:clean eclipse:eclipse'并在eclipse上重新加载了这个项目。之后我已经清理了eclipse项目和Tomcat Work Directory。我从项目文件夹中删除旧的/ bin目录。现在,我意识到tomcat正在运行一个旧代码。我需要发现这个代码在哪里... –
通常,Eclipse将代码部署到Tomcat:.metadata \ .plugins \ org.eclipse.wst.server.core \ tmp0 – Zagrev
似乎控制台被设置为某种其他编码,可能是cp1252或latin1。 –
将“this.id = id”替换为“this.id = TITULO”。现在这个.id有7个字符或者6. –
@DanielFischer不一定是控制台,但也许Eclipse通常使用错误的字符集?如果让JVM确定字符串的大小会发生什么?做'int len = id.length();'看看'len'的值在调试器中是什么。它可能是JVM编码不匹配。这些信息在调试时通过套接字传输,因此Eclipse可能试图使用与Tomcat不同的编码来确定它。除此之外,我不知道。 :3 – Brian