4

AndroidSutdio デバッグまたは Android レイアウトで UTF8 文字列を正しく表示できません。以下は私のコードです:

       文字列 test1 = "hélǐ";

結果は test1 = helÇ� です。

test1 メモ帳++でANSIエンコーディングを使用してUTF8文字列を読み取るのと似ています。ただし、(Button.setHint() メソッドを使用する代わりに) XML レイアウトに直接ハードコードすると、hélǐ を正しく表示できます。

UPDATE 1 : 4 ではなく test1.length() = 6 であることを指摘してくれた Jon Skeet に感謝します。したがって、表示の問題ではありません。更新 2:「h\u00e9l\u012d」が正しい答えを返すことを指摘してくれた Joop Eggen に感謝します。したがって、それは AndroidStudio 関連の問題である必要があります。更新 4 : 変数 JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF-8 を追加して、そのコマンドを使用して javac を強制しますが、結果には影響しません。更新 5 : AndroidStudio を ubuntu にインストールし、コードをコピーして貼り付けると、そこでも正常に動作します。しかし、AndroidStudio Windowsでそれを修正するにはどうすればよいですか? (残念ながら、Windowsを使用する必要があります)

以前にその問題に直面したことのある人はいますか? \uコードを使用せずに修正する方法ありがとう

ノート:

  • 私はAndroidStudioを使用しています
  • Javac および Android DX コンパイラーに -encoding utf8 を追加しました
  • 私の AndroidStudio では、すべてのファイルのエンコーディングが utf8 に設定されています (右下に utf8 が表示されます)。
  • Charset.defaultCharset() は utf8 を返します
  • InputStreamReader.getEncoding() は utf8 を返します
  • すべての私の xml レイアウトには、一番上に utf8 フラグがあります
  • メモ帳 ++ は、utf8 エンコーディングを使用したコピー/貼り付けの「hélǐ」を正しく読み取ります。
4

3 に答える 3

1

私のケースはSimonとまったく同じでした(Android Studio for Mac 0.2.2を使用しています)

/src フォルダーの下にあるbuild.gradleファイルを編集して、次の行を追加することで問題を解決しました。

tasks.withType(Compile) {
    options.encoding = 'UTF-8'
}

それは私のために働いた。同じ問題を抱えている人に役立つことを願っています。

于 2013-07-31T10:28:44.680 に答える
1
  • あなたも試してみてくださいh\u00e9l\u012d。これにより、Java ソース エンコーディングの要素が削除されます。
  • テキストをファイルに書き込んでみてください:

    new OutputStreamWriter(new FileOutputStream(ファイル), "UTF-8")

そうすれば、原因がより明確になるはずです。

エディターとコンパイラーは同じエンコーディングを使用する必要があるため、残りの部分について可能な限りのことを行ったようです。特に NotePad++ でチェックします (- JEdit も可能です)。1 つの小さなポイントは、IDE バックグラウンド コンパイルと最終コンパイルです。

また、コンソールも実行されています。コンソールはオペレーティング システムのエンコーディングを誤って使用している可能性があります。

それらnew String(...)はすべて不必要で間違っています。ここでは使用しないでください。実際、1 つのエラーが、エディターとコンパイラーのエンコーディングの不一致の間のエラーをキャンセルする可能性があります。

(ISO-8859-1 ĭ(i-breve) では利用できないため、test3.)

于 2013-05-26T09:53:09.597 に答える
0

AndroidStudioの最新バージョンで修正

于 2013-05-31T09:17:11.887 に答える