android .txt文件的读取编码格式问题

tyl355402 2010-04-15 10:00:32
我想在android做个txt文本浏览器,要对用户放到sd卡里面的txt文件进行读取并显示在屏幕上,能打开用户用不同的编码格式保存的txt文件(Unicode,UTF-8,ASCII,GB2312,Big5...),我现在不知道android系统默认的编码格式是哪种到网上看了下好象是utf-8的,我想首先判断读取文本的编码格式,等确定了以后再把它转成系统默认的编码格式,然后通过字库表去对照,然后显示对应的字符?不知道论坛上面有没人搞过这方面的,希望大家能给个建议,包括怎么去判断一个文本文件是以什么样的编码格式保存的?还有如果判断好了该怎么去转化成系统默认的编码格式?
...全文
5702 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjroo19811 2011-09-20
  • 打赏
  • 举报
回复
都是高手 学习学习~~~~
JSJ_baichi 2011-09-20
  • 打赏
  • 举报
回复
好贴!学习!
guoying_ 2011-09-20
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 yiyaaixuexi 的回复:]

想要无乱码显示文本必须转成utf-8
如果你已经做好了如何判断当前txt是什么编码的操作,那么判断后,转码就好了。
不同编码格式有不同的性质,你要具体熟悉后,才能理解怎么转码。
utf-8:UNICODE转换格式,对于常用字符使用单字节,汉字等使用双字节。
GB2312(通常windows下保存的txt的编码格式):此编码完全忽略了ASCII表中 127位后面的内容,127位前面的内容保……
[/Quote]
+++
foley_liao 2011-04-18
  • 打赏
  • 举报
回复
楼主试试 cpdetector_1.0.8.jar 这个jar包 我以前就是用它来做的
redoffice 2011-04-18
  • 打赏
  • 举报
回复
在寻找能够阅读doc文档的源代码,或者思路。
wxsperfect 2011-04-17
  • 打赏
  • 举报
回复
new String()有转换编码的方法 查下API应该可以看到的
念茜 2011-04-02
  • 打赏
  • 举报
回复
想要无乱码显示文本必须转成utf-8
如果你已经做好了如何判断当前txt是什么编码的操作,那么判断后,转码就好了。
不同编码格式有不同的性质,你要具体熟悉后,才能理解怎么转码。
utf-8:UNICODE转换格式,对于常用字符使用单字节,汉字等使用双字节。
GB2312(通常windows下保存的txt的编码格式):此编码完全忽略了ASCII表中 127位后面的内容,127位前面的内容保留,如果两个字节同时大于127(7F)就认为这两个字节表示一个汉字,同时像标点、字母也都重新使用两个字节 定义了一遍,这就是我们经常说的 全角,这种方案可以表示6000种文字。
GBK:人们开始扩展GB2312,规定只要一个字节大于127,这个字节和后面的字节组合起来就代表一个汉字,这种编码成为GBK,于是又增加了20000多个汉字。
这仅仅是简体中文,还有BIG5,JIS等等,如果有需要,都要具体熟悉才可以。

男主角 2011-04-02
  • 打赏
  • 举报
回复
GOOD GOOD STUDY, DAY DAY UP.
tyl355402 2010-04-19
  • 打赏
  • 举报
回复
我之前是用那方法 去实现的,可后来在转换到系统默认的utf-8的时候显示老是不正常。所以我才想再写入一个系统的临时文件之后再去读取出来才没乱码的。可这样很麻烦而且感觉一点也不好系统开销太大。
旭日升 2010-04-19
  • 打赏
  • 举报
回复
学习...
yangxuanlun 2010-04-18
  • 打赏
  • 举报
回复
默认的不是UTF-8就是GB2312 你在读去的时候首先应该按照源文件里面的文档编码格式读取,然后再用你自己想用的编码格式编码显示出来。这样做应该就会对了。
yyy025025025 2010-04-16
  • 打赏
  • 举报
回复
我明白你的意思了,我做的时候。

1. 读取文件信息,比如说头,长度,读入到byte array中。
2. 通过 String(bytes, startPosition, endPosition, decodeType), 将数据取为String类型。
3. 直接将String塞到textView里面就OK了。
tyl355402 2010-04-16
  • 打赏
  • 举报
回复
我不知道要不要从文件中读出来以后对他进行转码?
tyl355402 2010-04-16
  • 打赏
  • 举报
回复
我没有写我是直接在android里面将从sdcard读取的字符串用canvas.drawTxt(string ,x,y,paint);来画到屏幕上面的。有没有这方面的开源程序,我想去研究下。看他们是怎么去实现的。
tyl355402 2010-04-16
  • 打赏
  • 举报
回复
你做了去读取保存不同的.txt的编码格式再去读取看看
我想已经现在了那功能,可必须要先转系统默认的编码保存到一个临时文件一次,然后再去取出来就可以正常显示结果了。我觉得肯定有直接的办法可以解决的。
yyy025025025 2010-04-15
  • 打赏
  • 举报
回复
建议楼主按照以下步骤来:

1. 读取文件的头,会包含编码信息。GBK, BIG5文件可能没有头。
2. 根据不同的编码,去解码,然后再塞到textView里面就OK了。
bsr2009 2010-04-15
  • 打赏
  • 举报
回复
SD卡下txt文件不一定就是系统默认的编码格式。
昕颖 2010-04-15
  • 打赏
  • 举报
回复
UTF8
yyy025025025 2010-04-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tyl355402 的回复:]

decodeType这个编码格式是系统的还是得到的文本编码格式?
[/Quote]

这个是文本的编码格式。

在读取的时候,将数据读进来,放在String里面就好了。如果一定要将强制转换为系统的编码格式,感觉有没有必要。
而且你强制转换,意味着你要新建一个文件,编码为你想要的,然后写文件。
tyl355402 2010-04-15
  • 打赏
  • 举报
回复
我做了个实验我把xp上面的一个新建文本除UTF-8编码格式保存可以在android上面正确显示中文以外,其他几种格式都不能正常显示。在xp下面运行小例子的时候除ANSI这个格式读取并可以用println正确显示外其他的几种格式都会不正常显示。这是我的测试代码:
String encoding = getCharSet(path);//得到输入的文本文件保存的编码类型。
File file = new File(path);
InputStreamReader input = new InputStreamReader(new FileInputStream(file),encoding);
BufferedReader reader = new BufferedReader(input);
String empString = null;
while((empString = reader.readLine()) != null){
//empString = new String(empString.getBytes("UTF-8"),"UTF-8");
System.out.println(empString);
}
reader.close();
给我的感觉如果是在读取得到的中间流中对他们进行编码转化,因该是徒劳无功的,它在保存文本的时候就决定了它是属于何种格式了,如果强制转系统默认的编码格式,只能是错更离谱。不知道我的想法对不对。
加载更多回复(3)

80,353

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧