手机
当前位置:查字典教程网 >编程开发 >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);

}

}

【使用java从乱码文本中解析出正确的文本】相关文章:

java中使用sax解析xml的解决方法

java 代码中预防空指针异常的处理办法

java从list中取出对象并获得其属性值的方法

java堆栈类使用实例(java中stack的使用方法)

java使用dom4j解析xml配置文件实现抽象工厂反射示例

java使用Jsoup组件生成word文档

java学习之路_篇超好的文章第1/3页

java 取出文本文件中空行的实例代码

使用Java获取html中Select,radio多选的值方法

使用java获取md5值的两种方法

精品推荐
分类导航