黑马程序员技术交流社区

标题: 读取文本部分,数据变成byte数组,如何防止字符被拆开? [打印本页]

作者: 做個、堅強de女    时间: 2011-11-17 20:16
标题: 读取文本部分,数据变成byte数组,如何防止字符被拆开?
我要读取一个大文本,于是每次读取一小部分(假设每次读取58kb),读取出来的形式是byte数组,然后再把byte数组转化为String。现在遇上的问题是一些特殊编码如unicode最开始读取到的58kb数据不是乱码,但是往后都是乱码了。经过查找资料得知,原因是unicode一个字符要占几个字节吧,由于我分块读取所以把分界点的字符拆开了,比如只读取了半个字符。应该这就是问题所在了吧。现在我考虑的办法是分析每块读取的byte数组最后长度为10的一部分如果没有半个字符就读完,如果有半个字符就归到下一块。只是我不知该如何区分,求助。或者你们觉得我的想法有错或者有更好的想法也可以提出来。编码类型现在考虑到的有UNICODE、UTF-16BE、UTF-16LE。值得注意的是现在我已经能判断这几种编码类型了,所以问题仅仅有以上所说的
作者: 梦女孩    时间: 2011-11-17 23:40
想要做这个首先要了解你要操作的字符编码。就好比utf-8:
0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
它可以有这么几种形式,虽然长度不一,但是有可以判断的依据。你只需要考虑你截取位置的下一个byte不是10开头,那就不会断字。
不同的编码要有不同的考虑方式,这个没有统一方法,就要看你对字符编码的掌握程度如何了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2