Java怎么避免UTF-8的csv文件打开中文出现乱码
本篇内容主要讲解“Java怎么避免UTF-8的csv文件打开中文出现乱码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么避免UTF-8的csv文件打开中文出现乱码”吧!
创新互联公司专业为企业提供黄冈网站建设、黄冈做网站、黄冈网站设计、黄冈网站制作等企业网站建设、网页设计与制作、黄冈企业网站模板建站服务,十余年黄冈做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
因为条件有限,只测试了这几个版本,可见utf-16le是更通用的编码格式。下面附上java代码,main方法中采用utf-16le编码,最后调用了utf8编码的方法,最后会输出两种编码格式的csv文件:
import java.io.*;/** * Created by zhaozhi on 15-5-29. */public class TestCSV { public static String join(String[] strArr, String delim) { StringBuilder sb = new StringBuilder(); for(String s : strArr) { sb.append(s); sb.append(delim); } String ret; if (strArr.length > 1) { ret = sb.substring(0, sb.length()-1); } else { ret = sb.toString(); } return ret; } public static void main (String[] args) throws Exception { String[] heads = {"日期", "产品", "订单数"}; String[][] rows = { {"20150228", "安卓", "23"}, {"20150301", "web", "34"} }; byte[] bom = {(byte)0xFF, (byte)0xFE}; String fname = "d:\\utf-16le.csv"; BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(fname)); bo.write(bom); bo.write(join(heads, "\t").getBytes("utf-16le")); bo.write("\n".getBytes("utf-16le")); for (String[] row : rows) { bo.write(join(row, "\t").getBytes("utf-16le")); bo.write("\n".getBytes("utf-16le")); } bo.close(); UTF8(); } public static void UTF8() throws IOException { String line = "中文,标题,23"; OutputStream os = new FileOutputStream("d:/utf-8.csv"); os.write(239); // 0xEF os.write(187); // 0xBB os.write(191); // 0xBF PrintWriter w = new PrintWriter(new OutputStreamWriter(os, "UTF-8")); w.print(line); w.flush(); w.close(); }}
excel版本 | 附加包 | 编码 | 测试结果 |
---|
到此,相信大家对“Java怎么避免UTF-8的csv文件打开中文出现乱码”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
本文名称:Java怎么避免UTF-8的csv文件打开中文出现乱码
文章来源:http://azwzsj.com/article/pcesdo.html