中文或日文字符串比较

时间:2012-03-06 10:06:45

标签: java string jsp comparison cjk

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

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

即使他们的长度不平等! new String("官话").length();不等于
formInputtedCharacter.length();,打印时的输入是“官话”(已经是UTF-8)

怎么会这样?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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