Ini adalah program yang bisa mendapatkan teks asli yang benar dari teks yang kacau, berdasarkan prinsip yang salah pengkodean sering menyebabkan suplementasi bit, sehingga jumlah byte yang digunakan oleh teks yang benar harus menjadi yang terkecil (satu).
Salinan kode adalah sebagai berikut:
paket com.hongyuan.test;
impor java.io.unsupportedencodingException;
/*
* Ini adalah program yang bisa mendapatkan teks asli yang benar dari teks yang kacau, berdasarkan prinsip yang salah pengkodean sering menyebabkan suplemen bit,
* Oleh karena itu teks yang benar harus menggunakan jumlah minimum byte (satu).
*
* Jika Anda tidak bisa mendapatkan teks yang benar saat menguji program ini, alasan yang mungkin adalah sebagai berikut:
* 1. Program ini hanya bisa mendapatkan teks asli dari teks yang dikodekan dengan kesalahan, dan tidak dapat memulihkan teks dari beberapa teks yang dikodekan kesalahan.
* 2. Kadang -kadang penyandian yang salah menyebabkan beberapa karakter menjadi karakter yang tidak terlihat, dan Anda mungkin tidak menyalin semua teks yang kacau, menghasilkan bit yang hilang. Dalam hal ini, teks tidak dapat dipulihkan.
* 3. Teks asli adalah set karakter yang relatif besar.
* 4. Selamat untuk memenangkan hadiah. (Ini memang jarang)
*
* CATATAN: Teks kacau dalam program ini diperoleh dengan menyesuaikan beranda Baidu (UTF-8) ke GBK (jelas-jelas kacau). Jika Anda memiliki pertanyaan, jangan ragu untuk membalas.
*/
kelas publik charsetTest {
Public Static Final String [] charset_names = string baru [] {"iso8859-1", "gbk", "utf-8"};
public static void main (string [] args) melempar UnsupportedencodingException {
// Garbose String
String str = "中文版文版文版文版";
int strlength = integer.max_value; // panjang karakter
String newstr = ""; // berdiri dianalisis dari string kacau
String srccharset = ""; // encoding string terkelup saat ini
String targetcharset = ""; // penyandian yang benar dari string yang kacau
// Perjalanan melalui kemungkinan kombinasi penyandian untuk membuat format pengkodean dengan panjang penyandian terkecil
untuk (int i = 0; i <charset_names.length; i ++) {
untuk (int j = 0; j <charset_names.length; j ++) {
String temp = string baru (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];
}
}
}
// Keluarkan kode kueri dan format teks yang benar
System.out.println (srccharset+"->"+targetCharset+":"+newstr);
}
}