旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

java中excel导出乱码解决方法【JAVA教程】,java,乱码

作者:搜教程发布时间:2019-12-05分类:JAVA教程浏览:26评论:0


导读:毛病体式格局:response.setHeader("Content-Disposition","inline;filename="+newString(file...

毛病体式格局:

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[]数组才准确被复原。

更多java学问请关注java基础教程栏目。

注重:

有时候,为了让中文字符顺应某些特殊请求(如httpheader请求其内容必需为iso8859-1编码),可能会经由过程将中文字符根据字节体式格局来编码的状况,如:

String s_iso88591 = newString("中".getBytes("UTF-8"),"ISO8859-1"),如许获得的s_iso8859-1字符串现实是三个在ISO8859-1中的字符,在将这些字符通报到目的地后,目的地顺序再经由过程相反的体式格局Strings_utf8 = newString(s_iso88591.getBytes("ISO8859-1"),"UTF-8")来获得准确的中文汉字"中",如许就既保证了恪守协定划定、也支撑中文。

以上就是java中excel导出乱码解决要领的细致内容,更多请关注ki4网别的相干文章!

标签:java乱码


欢迎 发表评论: