이것은 잘못된 인코딩이 종종 비트 보충으로 이어지는 원칙을 기반으로 Harbled 텍스트에서 올바른 원본 텍스트를 얻을 수있는 프로그램이므로 올바른 텍스트에서 사용하는 바이트 수는 가장 작아야합니다 (하나).
코드 사본은 다음과 같습니다.
패키지 com.hongyuan.test;
java.io.unsupportedencodingException 가져 오기;
/*
* 이것은 잘못된 인코딩이 종종 비트 보충으로 이어지는 원칙을 바탕으로 garbled 텍스트에서 올바른 원본 텍스트를 얻을 수있는 프로그램입니다.
* 따라서 올바른 텍스트는 최소 바이트 수 (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)은 UnsupportedEncodingException {
// GARBOSE String
문자열 str = "中文版文版文版文版";
int Strlength = integer.max_value; // 문자 길이
문자열 newstr = ""; // stands awred strings에서 분석되었습니다
문자열 srcCharSet = ""; // 현재 갈색이 많은 문자열 인코딩
문자열 targetcharset = ""; // garbled 줄의 인코딩을 올바르게합니다
// 가능한 인코딩 조합을 통해 이동하여 인코딩 길이가 가장 작은 인코딩 형식을 만듭니다.
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 = 임시;
srccharset = charset_names [i];
대상 charset = charset_names [j];
}
}
}
// 쿼리 코드와 올바른 텍스트 형식을 출력합니다
System.out.println (srccharset+"->"+targetcharset+":"+newstr);
}
}