java 往csv文件写入内容乱码
2017-01-05 19:48
169 查看
在往csv文件中写入内容的时候,习惯性的指定了utf-8编码,原以为啥事都没有,但是打开文件的时候,一下子就懵逼了
具体代码如下:
[align=left]
[/align]
[align=left]
[/align]
[align=left]既然utf-8不行,那我们试试gb2312?[/align]
[align=left]说干就干,修改代码如下:[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]run as...然而,现实又一次无情的摧残着我,还是不行,没办法,那就挨个都试一遍吧,试试gbk[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]等待着,终于,打开文件的那刹那,没看到乱码,欧耶~[/align]
[align=left]
[/align]
[align=left]那么问题来了,为什么要用gbk呢?这三者有什么区别?[/align]
[align=left]http://www.cnblogs.com/xiaomia/archive/2010/11/28/1890072.html 这篇文章很详细的解释了这几者的区别和联系。[/align]
具体代码如下:
public static void main(String[] args) throws Exception { File file = new File( "D:/country.csv"); if (! file.exists()) { file.createNewFile(); } OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(file ), "UTF-8" ); BufferedWriter bw = new BufferedWriter( out); try { String path = writeCSV.class .getResource("LocList.xml" ).getPath(); SAXReader reader = new SAXReader(); try { Document document = reader.read(path); Element rootElement = document.getRootElement(); Iterator< Element> iterator = rootElement.elementIterator(); Element ele = null; while ( iterator.hasNext()) { ele = iterator.next(); String country = ele.attributeValue( "Name"); List< Element> provinces = ele.elements(); if ( provinces == null || provinces.isEmpty()) { writeCSVLine(country, country, country, bw); continue; } for ( Element pe : provinces) { String province = pe.attributeValue( "Name"); if ( StringUtils.isEmpty(province)) { province = country; } List< Element> cities = pe.elements(); if ( cities == null || cities.isEmpty()) { writeCSVLine(country, province, province, bw); continue; } for ( Element ce : cities) { String city = ce.attributeValue( "Name"); if ( StringUtils.isEmpty(city)) { city = province; } writeCSVLine(country, province, city, bw); } } } System. out.println( "写入成功!" ); } catch (Exception e) { return; } } finally { bw.close(); } }
[align=left]
[/align]
public static void writeCSVLine(String country, String province, String city, BufferedWriter bw) throws IOException { StringBuilder sb = new StringBuilder(); sb.append( country).append( ',').append( province).append( ',').append( city); bw.write(sb.toString()); bw.newLine(); }
[align=left]
[/align]
[align=left]既然utf-8不行,那我们试试gb2312?[/align]
[align=left]说干就干,修改代码如下:[/align]
[align=left]
OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(file), "gb2312" );
[/align]
[align=left]
[/align]
[align=left]run as...然而,现实又一次无情的摧残着我,还是不行,没办法,那就挨个都试一遍吧,试试gbk[/align]
[align=left]
OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(file), "gbk" );
[/align]
[align=left]
[/align]
[align=left]等待着,终于,打开文件的那刹那,没看到乱码,欧耶~[/align]
[align=left]
[/align]
[align=left]那么问题来了,为什么要用gbk呢?这三者有什么区别?[/align]
[align=left]http://www.cnblogs.com/xiaomia/archive/2010/11/28/1890072.html 这篇文章很详细的解释了这几者的区别和联系。[/align]
相关文章推荐
- java使用CsvReader和CsvWriter对csv文件内容进行读取和写入操作
- 用java从网络上抓取HTML文件内容并写入本地文本中
- NET(C#)中将DataTable内容写入到CSV文件 与 将CSV文件内容读取到DataTable中(原创)
- 通过java的io流将本地文件读取到控制台,并将文件内容再次写入另一个文件中
- Java向Properties文件中写入内容
- java读写文件-经过多方搜索整合成我需要的功能(读写指定文件夹下面的多个指定名称的txt中的内容全部写入到一个指定的txt中)
- eclipse打开java文件,注释内容为乱码!
- Java读取和写入文本文件内容
- java从数据库导出.csv文件及中文乱码问题
- Linux中eclipse打开Windows下的Java文件注释内容为乱码
- JAVA中如何把system.out.println里的内容写入文件
- java操作将内容写入文件
- Java IO 读取/写入文件 中文乱码困难解决代码
- java 导出成.csv文件的乱码问题
- ubuntu下eclipse打开java文件,注释内容为乱码,解决方法。
- JAVA操作将内容追加写入文件
- ubuntu下eclipse打开java文件,注释内容为乱码,解决方法
- java 读取properties配置文件内容乱码 --日文乱码对应方法
- Java基础之IO流,创建文件并写入内容与IO异常的标准处理方法
- Java生成一个exel文件并写入内容