我有一个用户输入中文/日文字符的表单,然后将其与声明的值进行比较。问题是即使输入和声明的值相同也不相等。
variableA = "官话"
等硬编码变量不等于表单输入文本。打印时,会显示"官话"
。
即使他们的长度不平等! new String("官话").length();
不等于
formInputtedCharacter.length();
,打印时的输入是“官话”(已经是UTF-8)
怎么会这样?
答案 0 :(得分:3)
最可能的原因(如果您确定表单数据处理正确)是Java编译器在处理您的文字时使用了错误的编码。确保它使用与编辑源代码相同的编码。
答案 1 :(得分:1)
Java字符串使用UTF-16
表示,2
或4
字节长映射到Unicode
字符集中的字符。
官话
似乎有两个不同的unicode字符或字符编码问题。也许一个中国人和一个日本人看起来相同或类似?如果有两个不同的unicode字符,则会有两个不同的字节表示。因此它们在Java中并不相似。