なぜ文字列“¿” “¿”に翻訳されます.getBytes()を呼び出すとき

StackOverflow https://stackoverflow.com/questions/176084

  •  05-07-2019
  •  | 
  •  

質問

文字列"¿"を書き込むとき使用して

System.out.println(new String("¿".getBytes("UTF-8")));

¿ ¿の代わりに記述されています。

なぜ?そして、どうすれば修正できますか?

役に立ちましたか?

解決

これを解決するためにUTF-16を使用する必要はありません:

new String("¿".getBytes("UTF-8"), "UTF-8");

正常に動作します。 getBytes()メソッドに指定されたエンコーディングが、Stringコンストラクターに渡すエンコーディングと同じである限り、問題ありません!

他のヒント

文字列コンストラクターで文字セットを指定する必要があります( APIドキュメント)。

試してください:

System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));

文字列をバイトに変換するときと、バイトを再び文字列に変換するときの両方でエンコーディングを指定する必要があります。

システムコンソールがUTF-8ではないように聞こえます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top