如何解决java导出excel出现中文乱码问题?其实要解决这个问题也不难,这篇文章给出了相对应的分析和解答,下面我们一起来看看解决的方法。

创新互联公司专注于平顺企业网站建设,自适应网站建设,商城网站建设。平顺网站建设公司,为平顺等地区提供建站服务。全流程按需策划,专业设计,全程项目跟踪,创新互联公司专业和态度为您提供的服务
java导出错误方式与正确方法:
错误方式:
response.setHeader("Content-Disposition", "inline;filename="+ new String(fileName.getBytes(),"utf-8"));
String fileName = aicaseNodeDeptService.getFilename(request)+".xlsx";
response.setCharacterEncoding("UTF-8");
response.setContentType("application/ms-excel");
正确的方式:
response.setHeader("Content-Disposition",
"inline;filename="+
new String(fileName.getBytes("utf-8"),"iso8859-1"));原因:httpheader要求其内容必须为iso8859-1编码,在将这些字符传递到目的地后,目的地程序再通过相反的方式Strings_utf8 = newString(s_iso88591.getBytes("ISO8859-1"),"UTF-8")来得到正确的中文汉字"中",这样就既保证了遵守协议规定、也支持中文。
在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这表示在不同的操作系统下,返回的东西不一样!
String.getBytes(Stringdecode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如:
byte[] b_gbk = "中".getBytes("GBK");
byte[] b_utf8 = "中".getBytes("UTF-8");
byte[] b_iso88591 = "中".getBytes("ISO8859-1");将分别返回"中"这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时
b_gbk的长度为2,
b_utf8的长度为3,
b_iso88591的长度为1。
而与getBytes相对的,可以通过new String(byte[], decode)的方式来还原这个"中"字,
这个new String(byte[],decode)实际是使用指定的编码decode来将byte[]解析成字符串.
String s_gbk = new String(b_gbk,"GBK"); String s_utf8 = new String(b_utf8,"UTF-8"); String s_iso88591 = new String(b_iso88591,"ISO8859-1");
通过输出s_gbk、s_utf8和s_iso88591,会发现s_gbk和s_utf8都是"中",而只有s_iso88591是一个不被识别的字符(可以理解为乱码),为什么使用ISO8859-1编码再组合之后,无法还原"中"字?原因很简单,因为ISO8859-1编码的编码表根本就不包含汉字字符,当然也就无法通过"中".getBytes("ISO8859-1");来得到正确的"中"字在ISO8859-1中的编码值了,所以,再通过newString()来还原就更是无从谈起。
因此,通过String.getBytes(Stringdecode)方法来得到byte[]时,一定要确定decode的编码表中确实存在String表示的码值,这样得到的byte[]数组才能正确被还原。
注意:
有时候,为了让中文字符适应某些特殊要求(如httpheader要求其内容必须为iso8859-1编码),可能会通过将中文字符按照字节方式来编码的情况,如:
String s_iso88591 = newString("中".getBytes("UTF-8"),"ISO8859-1"),这样得到的s_iso8859-1字符串实际是三个在ISO8859-1中的字符,在将这些字符传递到目的地后,目的地程序再通过相反的方式Strings_utf8 = newString(s_iso88591.getBytes("ISO8859-
看完这篇文章,你能够独立解决java导出excel出现中文乱码问题了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读。
本文名称:如何解决java导出excel出现中文乱码问题
网页网址:http://www.yantingwz.cn/article/pgichs.html
其他资讯
- PostgreSQL中怎么安装和使用postgresqltuner工具-创新互联
- HTML5中HTMLCollection和NodeList的区别是什么
- 怎么在windows系统的域控制器中打开和使用组策略
- jquery相同id的值 jquery获取同级
- 服务器租用的时候如何选择带宽大小?
- 服务器租用价格的高低取决于什么因素(服务器租用价格的高低取决于什么因素呢)
- 该网站暂时无法进行访问,未备案怎么回事?(网站账号不能访问麻烦处理下呢)
- 深入浅出多进程Redis的冲突问题(多进程redis会冲突吗)
- 实现Redis集群中数据库间的切换(redis集群切换数据库)
- 定制网站建设费用定制网站建设多少钱一年


咨询
建站咨询
