2012-03-06 14 views
1

私は、ユーザーが中国語/日本語の文字を入力し、それを宣言された値と比較するフォームを持っています。問題は、たとえ入力と宣言された値が同じであっても同じではないということです。中国語または日本語の文字列の比較

variableA = "官话"のようなハードコードされた変数は、フォーム入力テキストと等しくありません。印刷されると、"官话"と表示されます。

長さも同じではありません! new String("官话").length();が印刷された入力がある
formInputtedCharacter.length();、 "官话" と等しくない(UTF-8すでに)

これはどのようになるだろうか?

答えて

3

フォームデータが正しく処理されていると確信している場合は、リテラルを処理するときにJavaコンパイラが間違ったエンコーディングを使用している可能性があります。ソースコードを編集するのと同じエンコーディングを使用していることを確認してください。

1

Javaの文字列はUnicode文字セットの文字に2または4バイト長のマッピングであるUTF-16を使用して表現されています。

官话に2つの異なるユニコード文字があるか、文字エンコードの問題があるようです。おそらく、中国人と日本人のキャラクターの1つが同じであるか、それとも類似しているのでしょうか? 2つの異なるUnicode文字がある場合、2つの異なるバイト表現があります。したがって、Javaでは似ていません。

関連する問題