首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Java
J2SE / 扩展类
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
RandomAccessFile读取中文文件,
加为好友
发送私信
在线聊天
donbing3
donbing
等级:
发表于:
2008-05-01 01:58:25
楼主
想用RandomAccessFile读取一个中文文件,文件是个用XP下记事本保存的以UTF-8编码的文本文件.
我先读取了2个字节,第一个字是中文.
RandomAccessFile reader = new RandomAccessFile(sourceFile, "r");
byte[] buff = new byte[2];
reader.readByte(buff);
System.out.println(new String(buff,"UTF-8");
这样出现的不是问号就是乱码,请问应该如何读取?
问题点数:
23
回复次数:
11
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wenzheng38
得之,我辛,不得,不伤
等级:
发表于:
2008-05-01 03:52:37
1
楼 得分:
0
为什么不一行一行的读呢
String str=reader.readLine();
System.out.println(new String(str,"UTF-8"));
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
qqxierh
等级:
发表于:
2008-05-01 05:54:56
2
楼 得分:
0
因为它的每个读取都是读一个byte,由于UTF-8的编码模式是
1110位15-12
10位11-6
10位5-0
因此你每次读出来的数都是负数,因此无法处理
建议在随机存取的时候不要有中文字符,如果有中文字符就用其它的类来实现。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
panxuan
peter
等级:
发表于:
2008-05-01 08:35:43
3
楼 得分:
0
关注!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
donbing3
donbing
等级:
发表于:
2008-05-01 16:12:41
4
楼 得分:
0
我可以读取单个字节根据UTF-8的标志位来判断吧?
因为要我要读取的只是个很大文件的极小部份,分散在文件中。所以我想这种方法最快了。
看了上面的回复我本想这样做的,如果是UTF-8汉字那么应该是1110xxxx作为第一个字节的。和0xffff与一下,如果结果是-17那么就再读取2个字节。3个字节放在一个类型是byte长度为3的数组中buff。
new String(buff,"UTF-8")这样来得到结果。
可是和我想的好像还是有点出入。。。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
donbing3
donbing
等级:
发表于:
2008-05-01 16:21:03
5
楼 得分:
0
原来第一个汉字有6个字节,是一个“啊”字。
可以转换成正确的汉字了,不过却是"?啊"。请问第一个问号是什么?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
donbing3
donbing
等级:
发表于:
2008-05-01 16:39:05
6
楼 得分:
0
原来是windows的记事本在保存成UTF-8时会写入EF BB BF3个字节。后面开始才是正文。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
qqxierh
等级:
发表于:
2008-05-01 17:01:32
7
楼 得分:
0
我也学到了东西 - -!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sky_ccy
蓝色十三月
等级:
发表于:
2008-05-02 09:39:23
8
楼 得分:
0
引用 7 楼 qqxierh 的回复:
我也学到了东西 - -!
真的吗?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
qqxierh
等级:
发表于:
2008-05-02 21:09:51
9
楼 得分:
0
我以前也没注意这些 看到这个贴才去看的API 然后发现的
不知道LS有什么高见?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
qqxierh
等级:
发表于:
2008-05-02 21:09:53
10
楼 得分:
0
我以前也没注意这些 看到这个贴才去看的API 然后发现的
不知道LS有什么高见?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ciitc2
ciitc2
等级:
发表于:
2008-05-05 15:48:07
11
楼 得分:
0
该回复于2008-05-05 17:41:43被版主删除
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友