对字符进行解析 使用RandomAccessFile类读取文件流,并使用seek(int position)方法定位起始位置使用read()方法读取了一个数据字节,然后如何判断这个字节是中文,还是英文,还是换行符"\r"或者"\n"判断玩之后,我如何来避免乱码呢!各位,谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵! 楼主对字符集还没有一个正确的认识,byte和char并不是1对1的,不同的字符集也不一样。而且同一字符集,中文char对应的byte数都有差别,所以楼主的问题估计不可能解决。到现在只有通过算法推测文件编码采用的字符集的代码,而且还是一个概率计算方式,并不能准备推断一个字符的的编码采用的字符集,并确定字符在字符集中的范围。 GB编码的文件中,中英文差不多可以判断字节是否大于127来判断,大于就是半个中文。\r\n就是10和13,好判断。乱码就难了,因为你不知道当前字节是前半个汉字还是后半个汉字。 没办法的,2楼是限定了GBK的txt,而且GBK是2个byte一个中文,但英文仍然是一个byte。如果一个GBK的txt去掉文件的第一个byte后再保存,你再打开看,你会看到正确的东西吗? 这个是一个道理。txt编辑器都是具备编码识别能力的,例如 Ueditor Editor P 同样你连文件是txt文件,还是其他类型的文件类型都不能确定,怎么去判断。要判断字符是否中文,首先要判断字节流采用的字符集。 首先你得知道文件使用的字符集(utf-8文件保存的时候有些保存了一个文件头标识)但是应该文件不能知道它的字符集--有待专家指点一下RandomAccessFile类读取文件为data 字节流,然后把它转换成文本流,转换时指定它的字符集,读取出来的都是unicode编码,这样你就能区分它是中文还是英文了,unicode编码我没有深入研究过,不过我可以确定英文的低8位应该是与ASC2编码保持一致,中文高8位与英文字母编码应该有明显区别"\r"或者"\n"直接查它的unicode编码就能够区分了,另外有些特殊字符可能是4个字节,你要把它当作codepoint来处理,java核心技术中有对此如何辨别的方法。 怎么java编程实现网络邻居的功能 如何在java 的class文件中的jvm字节码定位对应回到java源程序的某一行? 请大学帮忙解决软设中的几道题 菜鸟求助:为何这个程序没有调用paint的方法,而实现它的功能 求《java2 教程》第五版 随书光盘 源代码 这是什么错误啊? 请大家推荐一个Java实现平面直角坐标系的第三方类库 问大家一个菜鸟级JAVA的问题,不是很好回答哦! 初级问题,jdialog和jframe有何区别? 怎么样才能刷新JTable中的内容? 关于异常的使用困惑 对字符进行解析
中英文差不多可以判断字节是否大于127来判断,大于就是半个中文。
\r\n就是10和13,好判断。
乱码就难了,因为你不知道当前字节是前半个汉字还是后半个汉字。
如果一个GBK的txt去掉文件的第一个byte后再保存,你再打开看,你会看到正确的东西吗?
这个是一个道理。txt编辑器都是具备编码识别能力的,例如 Ueditor Editor P 同样你连文件是txt文件,还是其他类型的文件类型都不能确定,怎么去判断。要判断字符是否中文,首先要判断字节流采用的字符集。
RandomAccessFile类读取文件为data 字节流,然后把它转换成文本流,转换时指定它的字符集,读取出来的都是unicode编码,这样你就能区分它是中文还是英文了,unicode编码我没有深入研究过,不过我可以确定英文的低8位应该是与ASC2编码保持一致,中文高8位与英文字母编码应该有明显区别
"\r"或者"\n"直接查它的unicode编码就能够区分了,
另外有些特殊字符可能是4个字节,你要把它当作codepoint来处理,java核心技术中有对此如何辨别的方法。