Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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_Jsp_Comparison_Cjk - Fatal编程技术网

Java 中文或日文字符串比较

Java 中文或日文字符串比较,java,string,jsp,comparison,cjk,Java,String,Jsp,Comparison,Cjk,我有一个表单,用户输入中文/日文字符,然后将其与声明的值进行比较。问题是,即使输入和声明的值相同,也不相等 硬编码变量,如variableA=”官话"不等于表单输入文本。打印时,它显示“官话“ 甚至它们的长度也不相等!新字符串(“官话“”.length();不等于 formInputedCharacter.length();,其中打印时的输入为“官话“(已经是UTF-8了) 这怎么可能呢?最可能的原因(如果您确定表单数据处理正确)是因为Java编译器在处理文本时使用了错误的编码。请确保它使用的编

我有一个表单,用户输入中文/日文字符,然后将其与声明的值进行比较。问题是,即使输入和声明的值相同,也不相等

硬编码变量,如
variableA=”官话"不等于表单输入文本。打印时,它显示
“官话“

甚至它们的长度也不相等!
新字符串(“官话“”.length();
不等于
formInputedCharacter.length();
,其中打印时的输入为“官话“(已经是UTF-8了)


这怎么可能呢?

最可能的原因(如果您确定表单数据处理正确)是因为Java编译器在处理文本时使用了错误的编码。请确保它使用的编码与用于编辑源代码的编码相同。

Java字符串使用
UTF-16
表示,UTF-16是
2
4
字节长的映射,映射到
Unicode
字符集中的字符

似乎有两个不同的unicode字符表示
官话
或字符编码问题。可能一个中文字符和一个日文字符看起来相同或相似?如果有两个不同的unicode字符,则会有两个不同的字节表示。因此,它们在Java中不相似