java如何实现这个算法

wisely 发布于 2014/04/28 21:03
阅读 334
收藏 1

算法描述:

1、当读取的字节在0-127范围的话,说明是ascii字符。直接通过 char c=(char) ?转换就行 ;
2、如果字节 大于127 ,那么则判断字节是不是在128到224范围内,如果是的话,说明是GBK编码。因为utf-8的第一个字节范围是224到255范围内的。
3、如果不在128到224范围内,接着判断第二个字节,如果第二个字节在64到128范围内的话,那么则为GBK 编码。因为UTF-8 的第二三个字节范围是128--255.获取这两个字节,转成十六进制,再通过gbk unicode映射表就可以得到unicode值,再通过unicode值就可以得到中文汉字。
4、如果第二个字节依旧不在64到128范围内。那么则判断第三个字节。如果第三个字节在0--127范围的话,说明前两个字节为gbk编码。因为gbk编码是两个字节。
5、如果第三个字节大于127的话,说明这三个字节为utf-8编码。然后通过utf-8 与unicode的转码规则公式换算成unicode,然后通过unicode得到中文汉字。

其实就是一个完全通过手动的方式读取文件并处理字符编码的问题。

就是针对一些乱码的文件,通过读取其字节码并判断出正确的编码然后转化为正确编码的文件。

加载中
0
徐春鹏
徐春鹏

你描述的不是很清楚了吗? 要现成的代码?

0
十六进制的人生
十六进制的人生

过程自己不是说的很清楚了么?查查jdk里的Byte应该就写的出来啊

0
Lyuans
Lyuans

搞个 乱码问题有必要写这种东西吗?????!!!!

返回顶部
顶部