Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java文字字符串:运行时错误的字符集_Java_String_Character Encoding - Fatal编程技术网

Java文字字符串:运行时错误的字符集

Java文字字符串:运行时错误的字符集,java,string,character-encoding,Java,String,Character Encoding,我在Java中遇到了文字字符串的字符集问题 如下图所示,我有一个名为TITULO的静态对象,带有一个文本字符串常量参数“Título”。当我运行程序时,这个字符串读作“TÃ-tulo”。我不知道为什么 我在eclipseprojectproperties窗口和Tomcat设置中探索了字符集设置,但它们都是以UTF-8作为选项的 我正在运行Tomcat7、EclipseHelios和WindowsSO 有人能帮我解决这个问题吗?我相信您正在查找的字符串(this.id)实际上不是静态常量字符串T

我在Java中遇到了文字字符串的字符集问题

如下图所示,我有一个名为TITULO的静态对象,带有一个文本字符串常量参数“Título”。当我运行程序时,这个字符串读作“TÃ-tulo”。我不知道为什么

我在eclipseprojectproperties窗口和Tomcat设置中探索了字符集设置,但它们都是以UTF-8作为选项的

我正在运行Tomcat7、EclipseHelios和WindowsSO


有人能帮我解决这个问题吗?

我相信您正在查找的字符串(this.id)实际上不是静态常量字符串Titulo


在代码的某个地方,您正在读取正确的unicode字符串Titulo,将其转换为字节数组,然后将其转换回字符串并将其传递给Style的构造函数。该字符串在转换过程中损坏。除非显示调用Style构造函数的代码堆栈跟踪,否则不能再多说。

您可以尝试在server.xml中将Tomcat URIEncoding设置为UTF-8

<Connector port="8090" URIEncoding="UTF-8"/>

eclipse编辑器中的代码与tomcat正在执行的代码不同

我在/target文件夹中找到了一个.war文件。我删除了这个war文件并开始工作!tomcat正在运行这个旧war文件中的类

我最近将这个正在运行的eclipse项目转换为一个maven项目。我可能在创建此war文件的过程中执行了“mvn包”


感谢大家帮助我找到此解决方案。

控制台似乎设置为其他编码,可能是cp1252或拉丁文1。请将“this.id=id”替换为“this.id=TITULO”。现在this.id是7个字符还是6个字符。@danielfisher不一定是控制台,但可能Eclipse通常使用了错误的字符集?如果让JVM确定字符串的大小,会发生什么?Do
int len=id.length()
并查看调试器中
len
的值。这可能是JVM编码不匹配。调试时,此信息通过套接字传输,所以Eclipse可能试图使用与Tomcat不同的编码来确定它?除此之外,我没有任何线索3hanks@DanielFischer。当我添加
int len=id.length()
来调试它时,我意识到运行的代码与编辑器中的当前代码不同。我认为Tomcat运行的是一个非常旧的编译代码。我试过清理所有的项目和Tomcat目录,但是没有用。我试过了。但这不管用。新信息:我已将eclipse项目更改为maven项目。我运行了mvneclipse:cleaneeclipse:eclipse,并在eclipse上重新加载了项目。之后,我清理了eclipse项目和Tomcat工作目录。我从项目文件夹中删除旧的/bin目录。现在,我意识到tomcat正在运行一个旧代码。我需要发现这些代码在哪里……通常,Eclipse会在这里将代码部署到Tomcat:.metadata\.plugins\org.Eclipse.wst.server.core\tmp0yes。在我更改代码以测试@Brian建议之后,现在我知道我在编辑器中的代码不是正在运行的代码。我正在搜索这个坏代码。