Java文件编码 我有一个中文的txt文件,采用UTF-8编码。我使用EditPlus打开 - Save As -选择编码选择ANSI编码存储,文件里面的中文不会出现乱码。如果我用Java代码来实现,请问如何实现?最好能直接给一个实例,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static void translateFile(File source, String sourceEncoding, File dest, String destEncoding) throws Exception { String encoding = detectText(source); if(!sourceEncoding.equals(encoding)) return; BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(source), sourceEncoding)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dest), destEncoding)); char[] chars = new char[1000]; int i; while((i = reader.read(chars)) != -1) { writer.write(chars, 0, i); } reader.close(); writer.close(); }上面的方法参数不用说明了吧。。完全可运行 上面的UTF-8转换GBK是没有问题的。我UTF-8转换成US-ASCII就有问题了,但是在EditPlus里面是没有问题的。请问类似这种是怎么实现的? US-ASCII都不包括中文的编码,转换应该是有问题的。你指的在EditPlus里面没有问题,你有没有查看过保存之后的文件编码,是否真的是ANSI? 中文字符不可能被保存为ansi(256个字符)或者ascii(128个字符)编码他们是西欧字符编码 信息丢失了白,这个要看文本工具是怎么做的,要想知道,拿生成的文件用个hex编辑器看看 UTF-8:EFBBBFE4BDA0E5A5BDASNIC4E3BAC3文件里面都保存的是:“你好”ASNI的内容是丢失了,但是为什么它还是能显示“你好”?我用Java如何把C4E3BAC3转换成"你好"? C4E3BAC3 是 GBK 编码? 查了一下:C4E3是“你”字的GBK编码。BAC3是“好”字的GBK编码。根据wikepedia上的说法,我对ANSI的理解有错,ANSI应该是一个泛指当前机器标准编码(Windows的code page),用中文的应该就是GBK,如果用的是英文的就是CP1521。http://www.knowsky.com/resource/gb2312tbl.htmhttp://en.wikipedia.org/wiki/Code_page#Windows_.28ANSI.29_code_pages C4E3BAC3这是GBK编码说明EditPlus保存为Ansi时把中文转成了GBK编码用Java实现也是一样,把中文用GBK编码保存到文件就可以了 如果是直接把一个文件编码从UTF-8转换为GBK我会。但是我现在要做的是,文件的编码是ANSI,也就是在文本工具里面要这么显示。里面的中文采用GBK编码,请问这如何来做,可否给个实例。怎么感觉好像是文件里面的内容部分采用GBK编码,部分采用其它编码。 ANSI的含义根据环境而不同在简体中文系统下,ANSI编码代表GB2312编码并不是文件里面的内容部分采用GBK编码,部分采用其它编码。而是英文字母数字等在GBK编码下仍是一个字节,与它们的Ascii编码相同。所以该文件被存成ANSI编码,实际就是GBK编码 纠正了我对ansi的认识,仔细的去查了下,ansi code page=windows code page其中936 (Simplified Chinese GBK)是其双字节编码页中的一个,也就是楼上他们说的,如果没有理解错,因为是ascii的扩展,前128个英文字符在GBK中照常使用,楼主把文件保存为GBK已经达到了保存为ansi的要求啊 java Swing的一个问题 关于I/O流的问题 关于打成jar包的问题 一个排序问题,希望好心的大侠帮一下忙! 高分相求,来者有分,谁知道有关Applet中包的下载问题? 怎麼樣在Panel上顯示一個圖片? 菜鸟问JAVA高手,对thinking in Java!有何心得! 谁知道JAVA编程思想可以在哪下载? 有分 谁有在 UNIX下安装Tomcat的经验? getScreenSize()获取的屏幕分辨率与实际不符 我在Dtree中加入checkbox后想获取到选了checkbox的结点的名字。该怎么获取到结点的名字?用js 重构大神。面向对象大神Come On
public static void translateFile(File source, String sourceEncoding, File dest, String destEncoding) throws Exception {
String encoding = detectText(source);
if(!sourceEncoding.equals(encoding))
return;
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(source), sourceEncoding));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dest), destEncoding));
char[] chars = new char[1000];
int i;
while((i = reader.read(chars)) != -1) {
writer.write(chars, 0, i);
}
reader.close();
writer.close();
}上面的方法参数不用说明了吧。。完全可运行
我UTF-8转换成US-ASCII就有问题了,但是在EditPlus里面是没有问题的。
请问类似这种是怎么实现的?
EFBBBFE4BDA0E5A5BDASNI
C4E3BAC3文件里面都保存的是:“你好”
ASNI的内容是丢失了,但是为什么它还是能显示“你好”?
我用Java如何把C4E3BAC3转换成"你好"?
C4E3是“你”字的GBK编码。
BAC3是“好”字的GBK编码。
根据wikepedia上的说法,我对ANSI的理解有错,ANSI应该是一个泛指当前机器标准编码(Windows的code page),用中文的应该就是GBK,如果用的是英文的就是CP1521。
http://www.knowsky.com/resource/gb2312tbl.htm
http://en.wikipedia.org/wiki/Code_page#Windows_.28ANSI.29_code_pages
说明EditPlus保存为Ansi时把中文转成了GBK编码
用Java实现也是一样,把中文用GBK编码保存到文件就可以了
里面的中文采用GBK编码,请问这如何来做,可否给个实例。
怎么感觉好像是文件里面的内容部分采用GBK编码,部分采用其它编码。
ANSI的含义根据环境而不同
在简体中文系统下,ANSI编码代表GB2312编码
并不是文件里面的内容部分采用GBK编码,部分采用其它编码。而是英文字母数字等在GBK编码下仍是一个字节,与它们的Ascii编码相同。
所以该文件被存成ANSI编码,实际就是GBK编码
其中
936 (Simplified Chinese GBK)是其双字节编码页中的一个,
也就是楼上他们说的,如果没有理解错,因为是ascii的扩展,前128个英文字符在GBK中照常使用,
楼主把文件保存为GBK已经达到了保存为ansi的要求啊