Java 文字列が文字化けする解決策: (推奨: Java ビデオ チュートリアル )
System.out.println(str); String str1 = new String(str.getBytes("ISO-8859-1"), "utf-8"); System.out.println(str1); String str2 = new String(str.getBytes("gb2312"), "utf-8"); System.out.println(str2); String str3 = new String(str.getBytes("gbk"), "utf-8"); System.out.println(str3);
str.getBytes(charsetName);charsetName は元の文字です。
「utf-8」は、str を utf-8 エンコーディングに変換することです。
new String(str.getBytes("gbk"),"iso8859-1")
ステップ 1: byte[] bytes=str.getBytes("gbk")
「gbk」メソッドで中国語をバイト配列に変換するように Java 仮想マシンに指示します。漢字 1 文字は 2 バイトに相当します。
対応する 2 番目のステップは次のとおりです:
String s=new String(bytes, "iso8859-1") の場合、各バイトは "?" に組み立てられます。このとき、s は複数の「?」ですが、「?」を特殊な漢字とみなして、それが表す情報を失わずに復元できます。
java.lang.String.getBytes(String charsetName) メソッドは、指定された文字セットを使用してこの String をバイト シーケンスにエンコードし、結果を新しいバイト配列に格納します。
宣言
以下は java.lang.String.getBytes() メソッドの宣言です
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException
パラメータ: charset -- これはサポートされている文字の名前ですセット。
戻り値: このメソッドは、結果のバイト配列を返します。
new String(byte[],decode) メソッド
getBytes と比較して、new String(byte[], decode),
## を通じて「中」文字を復元できます。 #This new String(byte[],decode) 実際には、指定されたエンコード デコードを使用して、byte[] を文字列に解析します。 Exception: UnsupportedEncodingException -- 指定された文字セットがサポートされていない場合。 Java についてさらに詳しく知りたい場合は、Java 基本チュートリアル 列に注目してください。
以上がJavaの文字化け解決入門の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。