03文字セットは、符号化と復号化、解決する文字化け

文字セット

  • 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); //出力:?
	}
}

  

おすすめ

転載: www.cnblogs.com/scopicat/p/11908745.html