文字セット
- ASCLLコードは、中国が含まれていません
- GBKは中国語専用されています
- Unicodeの国際
- 可変長符号化UTF-8
- ISO 8859-1
コーデック
エンコード:バイナリ文字が変わり、伝送を容易に
例:
文字列str =「私はいい人です」。
バイト[]日付= str.getBytes(); //オプションのブラケット要約充填文字セット名、特定の文字エンコーディングとして発現
デコード:バイナリマシンコードを文字にすることは、簡単に読むために
例:文字列にデータをアップロードするためにスイッチングネットワーク
列str =新しい文字列(日付); // strの変数、本明細書や日付など。Stringクラスの新しいStringコンストラクタメソッドを参照してください。
解決化け
トランスコーディングのための結果は、2つの理由があります文字化け:
1.受信したデータが不完全です
如:STR =新しい文字列(バイト0、bytes.length-1)。
2.文字セットは一様ではありません
以下のような:中国はISO-8859-1原因の歪みを使用してデコード
列str =新しい文字列(sBytes、 "ISO-8859-1");
この記事のコード
パブリッククラス文字セット { パブリック静的無効メイン(文字列[] args){ 文字列str =「私はいい人です」。 バイト[] sBytes = str.getBytes(); //デコーダによるデフォルトの文字セット System.out.println(sBytes.length)。 {(sBytesバイトb)のために System.out.println(B)。 } System.out.println( "------------------"); //文字化けの理由 //データの欠落 STR =新しい文字列(sBytes、0、sBytes.length-1)。 System.out.println(STR); //出力は、次のとおりです。私は良いのですか? //コーディングエラー {試します 列str =新しい文字列(sBytes、 "ISO-8859-1"); }キャッチ(例外e){ System.err.println( "デコード異常!"); } System.out.println(STR); //出力:????? } }