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中不相似