これは、間違ったエンコードがビットサプリメントにつながることが多いという原則に基づいて、Carled Textから正しい元のテキストを取得できるプログラムです。したがって、正しいテキストで使用されるバイト数は最小(1)でなければなりません。
コードコピーは次のとおりです。
パッケージcom.hongyuan.test;
java.io.unsupportedencodingexceptionをインポートします。
/*
*これは、誤ったエンコードがビットの補給につながることが多いという原則に基づいて、文字化けテキストから正しい元のテキストを取得できるプログラムです。
*したがって、正しいテキストは最小バイト数(1)を使用する必要があります。
*
*このプログラムをテストするときに正しいテキストを取得できない場合、考えられる理由は次のとおりです。
*1。このプログラムは、エラーエンコードされたテキストから元のテキストを1回だけ取得でき、複数のエラーエンコードされたテキストからテキストを回復することはできません。
* 2。間違ったエンコードにより、一部の文字が目に見えない文字になることがあり、すべての文字化けテキストをコピーしてビットが欠落している場合があります。この場合、テキストを復元できません。
*3。元のテキストは、間違ったエンコードを使用します。
* 4。賞を受賞したことをおめでとうございます。 (これは本当にまれです)
*
*注:プログラムの文字化けのテキストは、Baiduホームページ(UTF-8)をGBK(明らかに文字化けしている)を調整することで取得されます。ご質問がある場合は、お気軽に返信してください。
*/
パブリッククラスのcharsettest {
public static final string [] charset_names = new String [] {"iso8859-1"、 "gbk"、 "utf-8"};
public static void main(string [] args)はunsupportedencodingceptionをスローします{
// Garbose String
文字列str = "中文版文版文版文版";
int strlength = integer.max_value; //文字長
文字列newstr = ""; //スタンドは、文字列から分析されました
文字列srccharset = ""; //現在の文字列エンコーディング
string targetcharset = ""; //文字列の文字列の正しいエンコード
//可能なエンコーディングの組み合わせを通過して、最小のエンコード長でエンコード形式を作成します
for(int i = 0; i <charset_names.length; i ++){
for(int j = 0; j <charset_names.length; j ++){
string temp = new String(str.getBytes(charset_names [i])、charset_names [j]);
//system.out.println(temp);
if(temp.length()<= strlength){
strlength = temp.length();
newstr = temp;
srccharset = charset_names [i];
TargetCharset = charset_names [j];
}
}
}
//クエリコードと正しいテキスト形式を出力します
System.out.println(srccharset+" - >"+ターゲットチャーセット+":"+newtr);
}
}