Это программа, которая может получить правильный исходный текст из искаженного текста, основанный на принципе, который неправильное кодирование часто приводит к битовым добавкам, поэтому количество байтов, используемых правильным текстом, должно быть наименьшим (одно).
Кода -копия выглядит следующим образом:
пакет com.hongyuan.test;
импортировать java.io.unsupportedencodingexception;
/*
* Это программа, которая может получить правильный исходный текст из искаженного текста, основанный на принципе, который неверный кодирование часто приводит к битовым добавкам,
* Поэтому правильный текст должен использовать минимальное количество байтов (один).
*
* Если вы не можете получить правильный текст при тестировании этой программы, возможные причины следующие:
* 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) бросает UnsupportedEncodingException {
// Garbose String
String str = "中文版文版文版文版";
int strlength = integer.max_value; // Длина символа
String newstr = ""; // Анализируются из искаженных строк
String srccharset = ""; // текущая искаженная строка
String TargetCharset = ""; // Правильное кодирование исчезающих строк
// Передать возможные комбинации кодирования, чтобы создать формат кодирования с наименьшей длиной кодирования
для (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+"->"+TargetCharset+":"+Newstr);
}
}