應用java從亂碼文本中解析出准確的文本。本站提示廣大學習愛好者:(應用java從亂碼文本中解析出准確的文本)文章只能為提供參考,不一定能成為您想要的結果。以下是應用java從亂碼文本中解析出准確的文本正文
這是一個可以從亂碼文本中獲得准確的原始文本的法式,其基於的道理在於毛病的編碼常常招致位彌補,是以准確的文本應用的字節數應當是起碼的(之一)。
package com.hongyuan.test;
import java.io.UnsupportedEncodingException;
/*
* 這是一個可以從亂碼文本中獲得准確的原始文本的法式,其基於的道理在於毛病的編碼常常招致位彌補,
* 是以准確的文本應用的字節數應當是起碼的(之一)。
*
* 假如你在測試此法式時,沒法獲得准確的文本,能夠的緣由以下:
* 1.此法式僅能從一次毛病編碼文本中獲得原始文本,沒法從屢次毛病編碼中恢復文本。
* 2.有時毛病的編碼招致一些字符變成弗成見字符,你能夠沒有把一切的亂碼文本拷貝過去,從而招致位缺掉。這類情形下沒法恢復文本。
* 3.原始文本是一個比擬年夜的字符集,毛病的編碼應用小的字符集,那些在小字符集以外的字符信息喪失,沒法從中解析准確的文本。
* 4.祝賀你中獎了,有一些字符應用任何一種編碼沒有甚麼分歧或許毛病的編碼沒有招致位彌補,那末我也力所不及了。(這類情形確切很少見)
*
* 注:法式中的亂碼文本是將百度首頁(utf-8)調劑為gbk(明顯會亂碼)獲得的,有興致的同志可使用其他的亂碼測試。有成績迎接答復。
*/
public class CharSetTest {
public static final String[] CHARSET_NAMES=new String[]{"ISO8859-1","GBK","UTF-8"};
public static void main(String[] args) throws UnsupportedEncodingException {
//亂碼字符串
String str="寰蔣鐧懼害鍏辨帹Windows XP鑱斿悎闃叉姢瑙e喅鏂規";
int strLength=Integer.MAX_VALUE; //字符長度
String newStr=""; //從亂碼字符串剖析出的字符串
String 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+"-->"+targetCharSet+":"+newStr);
}
}