当前位置:首页 > 解决java中文问题
解决java中文问题
Last printed 4/28/2013 3:00:00 PM 。Last saved by ibm
解决java中文问题
导言................................................................................................................................. 1 环境................................................................................................................................. 1 解决之道.......................................................................................................................... 1
一.
jsp中文显示 ................................................................................................... 1 1. 往地址栏直接输入中文名 ............................................................................ 1 2. 通过超级连接传输....................................................................................... 2 3. 通过ActionForm传输.................................................................................. 2 4. Web服务器URIEncoding............................................................................. 2 5. Js里传参数 ................................................................................................. 2 二. 三.
数据库中文..................................................................................................... 3 邮件中文 ........................................................................................................ 3 1. 发中文名附件.............................................................................................. 3 2. 收中文名附件.............................................................................................. 3 四.
soap消息中文 ................................................................................................. 5 1. Base64编码 ................................................................................................ 5 2. Unicode编码 ............................................................................................... 5 五. 浏览器显示中文名文件 ................................................................................... 5 六. 七.
上传中文名文件.............................................................................................. 6 多语言混显问题.............................................................................................. 6
参考资料.......................................................................................................................... 7
导言
编写java方面的应用程序难点之一就是中文如何解决。本文就这个问题作了一些探讨。
环境 解决之道
一. jsp中文显示
1. 往地址栏直接输入中文名
如:输入http://localhost:8888/UUM/tree.do?type=ou&dn=ou=测试公司,dc=cmhk,dc=com
Page 1 of 7
2013-4-28
作者:黄伟平
解决java中文问题
Last printed 4/28/2013 3:00:00 PM 。Last saved by ibm
String dn=request.getParameter(\
dn=new String(dn.getBytes(\显示中文
2. 通过超级连接传输
如: String dn=request.getParameter(\ dn=new String(dn.getBytes(\ 3. 通过ActionForm传输 选择一:使用编码过滤器转换成中文 选择二:编码转换 String dn = form.getDn(); dn = new String(dn.getBytes(\ 4. Web服务器URIEncoding 默认为ISO-8859-1,有必要时可以修改。参见浏览器显示中文名文件 5. Js里传参数 比如: var str=\ if(document.ws.dns.value!=\ str = document.ws.dns.value+\ } var rt=window.showModalDialog( \测试公司,dc=cmhk,dc=com\ str, \ if(rt!=null&&rt!=\ var ss = rt.split(\ document.ws.dns.value=ss[0]; document.ws.names.value=ss[1]; document.ws.to.value=ss[1]; } 在ldapFrame.jsp里就要作如下转换,才能得到正确的中文(与一.1类似) 作者:黄伟平 Page 2 of 7 2013-4-28 解决java中文问题 Last printed 4/28/2013 3:00:00 PM 。Last saved by ibm String dn = new String(request.getParameter(\ 二. 数据库中文 数据库字符编码与传入的数据编码保持一致就可以了。 三. 邮件中文 1. 发中文名附件 @messageBodyPart.setFileName(MimeUtility.encodeWord(fileName)); @MimeBodyPart.setFileName(new String(file.getName().getBytes(), \ @JavaMail能很好的支持中文,但在测试过程中发现使用JavaMail发带有中文文件名的 附件时,文件名是乱码,经测试与查看源文件发现,是在JavaMail包里的一个写邮件 的方法没有考虑国际化因素,对双字节或多字节的字符没有考虑。即在 com.sun.mail.util.LineOutputStream调用 com.sun.mail.util.ASCIIUtility.getBytes(String s); 此方法直接将字符串转化成字符然后转换成字节。其实在String类里的getBytes() 方法就直接可以按照系统缺省的编码正确转换成字节码。 解决方法:将com.sun.mail.util.LineOutputStream中调用ASCIIUtility.getBytes(String s); 方法的部分改为s.getBytes()解决了此问题。 用 重 新 编 译 好 的 LineOutputStream.class 文 件 替 换 javamail 里 的 Com/sun/mail/util/LineOutputStream.class文件即可 2. 收中文名附件 现在研究javamail的人越来越多,现在我就谈谈在javamail中大家都会遇到的附件中文问题,由于sun的java的中文问题,导致当附件是中文时将出现乱码,导致程序异常,如何避免呢??我在学习javamail时采用如下方法首先对邮件体进行分析,首先判断邮件体是否有附件: Object out_content = message[i].getContent(); if (!(out_content instanceof Multipart)){//不是复合邮件体,既是不带附件。 partname = new String[0]; return partname; } 如果是复合邮件体,那么就可以调用如下的方法取得中文文件名: public static String getISOFileName(Part body){ //设置一个标志,判断文件名从Content-Disposition中获取还是从Content-Type中获取 boolean flag=true; if(body==null){ 作者:黄伟平 Page 3 of 7 2013-4-28 解决java中文问题 Last printed 4/28/2013 3:00:00 PM 。Last saved by ibm return null; } String[] cdis; try{ cdis=body.getHeader(\ } catch(Exception e){ return null; } if(cdis==null){ flag=false; } if(!flag){ try{ cdis=body.getHeader(\Type\ } catch(Exception e){ return null; } } if(cdis==null){ return null; } if(cdis[0]==null){ return null; } //从Content-Disposition中获取文件名 if(flag){ int pos=cdis[0].indexOf(\ if(pos<0){ return null; } //如果文件名带引号 if(cdis[0].charAt(cdis[0].length()-1)=='\ return cdis[0].substring(pos+10,cdis[0].length()-1); } return cdis[0].substring(pos+9,cdis[0].length()); }else{ int pos=cdis[0].indexOf(\ if(pos<0){ return null; } //如果文件名带引号 if(cdis[0].charAt(cdis[0].length()-1)=='\作者:黄伟平 Page 4 of 7 2013-4-28
共分享92篇相关文档