如何将文本文件的编码由ANSI转换为utf-8

nuannuan123456 2010-11-12 02:05:22
我有很多文本文件(手工处理不了),编码都是ANSI。我解析的时候发现,这种编码读出来的都是乱码,但是如果将编码改为utf-8解析出来就是对的,所以我想先写一个方法将这些文本文件的编码转成utf-8,请问哪位会啊,帮帮忙吧,小妹感谢啦
...全文
4419 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nuannuan123456 2010-11-16
  • 打赏
  • 举报
回复
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"gbk"));
//读取第一行

line = reader.readLine();
int lin = 0;
while(line != null) { // 如果 line 为空说明读完了
//将文本文件中的空行替换为“◆”
lin = line.length();
if(line.length()>3){
sb.append(line+"▲");
}else if(line.length() == 1){
sb.append("◆");
}
line = reader.readLine();


}
谢谢各位,用上面的话可以解决
magong 2010-11-14
  • 打赏
  • 举报
回复
在什么环境中、用什么读出来是乱码?
你希望怎样子读出来不是乱码?
nuannuan123456 2010-11-14
  • 打赏
  • 举报
回复
你没有理解我的意思。我的意思是我的txt文件不是utf-8的,是默认编码的(ANSI),这个编码的txt文件读出来是乱码,问怎么解决
[Quote=引用 8 楼 magong 的回复:]
引用 7 楼 nuannuan123456 的回复:

不转换我怎么能解析呢,我是把一个文件手动改成utf-8解析了一下看,能正确解析出来,那么多文件,我无法全部手动修改编码


你说的手动修改编码指的是?

如果你认定一个文件是utf-8编码的,就可以这样读取

Java code

FileInputStream is = new FileInputStream(new ……
[/Quote]
nuannuan123456 2010-11-14
  • 打赏
  • 举报
回复
问题是太多了,手动处理不了[Quote=引用 9 楼 wh81666825 的回复:]
最简单的方法就是用记事本打开,然后点击另存为,下面就可以选择编码!最后覆盖原文件…
[/Quote]
nuannuan123456 2010-11-14
  • 打赏
  • 举报
回复
我说的手动处理就是九楼说的方法[Quote=引用 8 楼 magong 的回复:]
引用 7 楼 nuannuan123456 的回复:

不转换我怎么能解析呢,我是把一个文件手动改成utf-8解析了一下看,能正确解析出来,那么多文件,我无法全部手动修改编码


你说的手动修改编码指的是?

如果你认定一个文件是utf-8编码的,就可以这样读取

Java code

FileInputStream is = new FileInputStream(new ……
[/Quote]
第五季思念 2010-11-14
  • 打赏
  • 举报
回复
最简单的方法就是用记事本打开,然后点击另存为,下面就可以选择编码!最后覆盖原文件…
magong 2010-11-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 nuannuan123456 的回复:]

不转换我怎么能解析呢,我是把一个文件手动改成utf-8解析了一下看,能正确解析出来,那么多文件,我无法全部手动修改编码

[/Quote]
你说的手动修改编码指的是?

如果你认定一个文件是utf-8编码的,就可以这样读取

FileInputStream is = new FileInputStream(new File("utf8.txt") );
InputStreamReader reader = new InputStreamReader(is, "UTF-8");

从reader上读取的,就会是正常的中文
nuannuan123456 2010-11-14
  • 打赏
  • 举报
回复
不转换我怎么能解析呢,我是把一个文件手动改成utf-8解析了一下看,能正确解析出来,那么多文件,我无法全部手动修改编码

[Quote=引用 5 楼 magong 的回复:]
文本文件的物理编码到底是ANSI还是UTF-8,文件本身是声明不了的。
既然你用UTF-8解析是对的,那它就已经是UTF-8的。
不需要转换。

Eclipse中识别文件编码有可能会有偏差,不能依赖它。
[/Quote]
nuannuan123456 2010-11-14
  • 打赏
  • 举报
回复
还是乱码,不过这次汉字都成问好了,上次汉字是黑方框
[Quote=引用 3 楼 houjin_cn 的回复:]
引用 2 楼 nuannuan123456 的回复:
谢谢你,我执行了以下,转换后的文件,编码对了,但是问及那里的汉字都成乱码了

哦? 那你把 String s=new String(bs); 这行改成 String s=new String(bs,"GBK"); 再重新转一下看看
[/Quote]
magong 2010-11-13
  • 打赏
  • 举报
回复
文本文件的物理编码到底是ANSI还是UTF-8,文件本身是声明不了的。
既然你用UTF-8解析是对的,那它就已经是UTF-8的。
不需要转换。

Eclipse中识别文件编码有可能会有偏差,不能依赖它。
TheoneFx 2010-11-13
  • 打赏
  • 举报
回复
你可以这样试试:
String s=new String(bs.getBytes(),"GBK");
houjin_cn 2010-11-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nuannuan123456 的回复:]
谢谢你,我执行了以下,转换后的文件,编码对了,但是问及那里的汉字都成乱码了
[/Quote]
哦? 那你把 String s=new String(bs); 这行改成 String s=new String(bs,"GBK"); 再重新转一下看看
nuannuan123456 2010-11-12
  • 打赏
  • 举报
回复
谢谢你,我执行了以下,转换后的文件,编码对了,但是问及那里的汉字都成乱码了
[Quote=引用 1 楼 houjin_cn 的回复:]
Java code

public static void ansiToUTF8(File f) throws IOException{
if(!f.isFile()){
return;
}
byte[] bs=new byte[(int)f.length()];
FileInputStr……
[/Quote]
houjin_cn 2010-11-12
  • 打赏
  • 举报
回复

public static void ansiToUTF8(File f) throws IOException{
if(!f.isFile()){
return;
}
byte[] bs=new byte[(int)f.length()];
FileInputStream fis=new FileInputStream(f);
try{
int io=0;
while(io<bs.length){
int n=fis.read(bs,io,bs.length-io);
if(n<=0){
break;
}
}
}
finally{
fis.close();
}
String s=new String(bs);
bs=s.getBytes("UTF-8");
FileOutputStream fos=new FileOutputStream(f);
try{
fos.write(bs);
}
finally{
fos.close();
}
}

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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