浏览 2006 次
锁定老帖子 主题:字符集与编码方式测试理解
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-01-05
最后修改:2012-01-05
问题: 一个文件用GBK编码,写了中文字符集,那么UTF-8使用它的时候,需要注意什么 一个有意思的小测试 在src下面放置两个文件,原始的文件 back那个代码设置为utf-8编码 下面的java代码也utf-8编码,gbk-utf.txt那个文件设置为GBK编码,随便打点汉字 public class IOCharsetConvert { public static void main(String[] args) throws Exception { //为了方便测试,此处用绝对路径,好修改文件编码 String path="D:\\springdemo1.0\\src\\main\\java\\"; String fileNamePrimitive=path+"gbk-utf8.txt"; List<String> list=read(fileNamePrimitive, "GBK"); BackFile(path+"gbk-utf8-back.txt", list); } private static List<String> read(String fileName,String convertCharSet) throws Exception{ BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(fileName),convertCharSet)); List<String> sbuffer=new ArrayList<String>(); String str=null; while((str=br.readLine()) != null){ sbuffer.add(str); System.out.println("test-->>"+str); } br.close(); return sbuffer; } public static void BackFile(String backFileName,List<String> strbuffer) throws IOException{ BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(backFileName))); for(String str:strbuffer){ bw.write(str); } bw.flush(); bw.close(); } } 1.运行代码--查看对应的back文件,编码没有问题,汉字一切正常 2.back编码与java代码编码不一致,运行程序,查看效果,乱码 3.编码一致的时候哪怕都是gbk或者utf-8 一切正常 结论: 这些中文字符集跟GBK对应存放在底层的具体二级制形式,我们在UTF-8中使用这些二级制肯定不能对应出UTF-8对应的中文字符,那么我们用不上这个二级制,能用上的只有字符 我们的java文件时UTF-8编码的,那么GBK按照读入进来的字符,就是在UTF-8里面增加字符 最后输出是怎样的?把这些UTF-8表示的字符按照二级制输出到对应文件,这个文件底层当然是二级制表示的,所以必须以java代码的编码格式来查看 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-01-05
哎,对不起语文老师,没看明白楼主说啥
|
|
返回顶楼 | |
发表时间:2012-01-10
无语了
Java文件的编码方式你就随意吧,没关系的 |
|
返回顶楼 | |
发表时间:2012-01-10
allenofchina 写道 无语了
Java文件的编码方式你就随意吧,没关系的 你测试过吗?? |
|
返回顶楼 | |