JAVA网页编程之Javamail中的罕见中文乱码成绩与办理办...
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。办理|成绩|中文|中文乱码在利用javamailapi开辟邮件服务体系时,我们经常会碰着良多中文乱码成绩,上面就分离先容怎样办理这些成绩。1.发送称号含中文的附件到邮件服务器,用其余邮件吸收程序吸收到的附件名显现为乱码
办理举措:
在挪用MimeBodyPart的setFileName()时利用Base64编码。比方:
[*]BASE64Encoderenc=newBASE64Encoder();//该类位于jre/lib/rt.jar中
[*]//fds为FileDataSource实例
[*]mbp.setFileName("=?GBK?B?"+enc.encode((fds.getName()).getBytes())+"?=");
2.吸收邮件时,猎取某些邮件发送程序发送的email地点,发送地点显现为乱码
办理举措:
对含有中文的发送地点,利用MimeUtility.decodeTex办法,对其他则把地点从ISO8859_1编码转换成gbk编码,见下例
[*]publicstaticStringgetFrom(Messagemsg){
[*]Stringfrom="";
[*]try{
[*]if(msg.getFrom()!=null)
[*]from=msg.getFrom().toString();
[*]if(from.startsWith("=?GB")||from.startWith(“=?gb”)){
[*]from=MimeUtility.decodeText(from);
[*]}else{
[*]from=StringUtil.toChinese(from);
[*]}
[*]}catch(Exceptione){
[*]e.printStackTrace();
[*]}
[*]from=StringUtil.replaceStr(from,“<”,“<”);//replaceStr为字符串交换函数
[*]from=StringUtil.replaceStr(from,">",">");
[*]returnfrom;
[*]}
[*]
[*]///////////////////StringUtil的toChinese办法//////////////////////////
[*]publicstaticStringtoChinese(Stringstrvalue){
[*]try{
[*]if(strvalue==null)
[*]returnnull;
[*]else{
[*]strvalue=newString(strvalue.getBytes("ISO8859_1"),"GBK");
[*]returnstrvalue;
[*]}
[*]}catch(Exceptione){
[*]returnnull;
[*]}
[*]}
3.吸收邮件时,猎取某个邮件的中文附件名,呈现乱码
办理举措:
关于用base64编码过的中文,则接纳base64解码,不然对附件名举行ISO8859_1到gbk的编码转换,比方:
[*]Stringtemp=part.getFileName();//part为Part实例
[*]if((temp.startsWith("=?GBK?B?")&&temp.endsWith("?="))
[*]||(temp.startsWith("=?gbk?b?")&&temp.endsWith("?="))){
[*]temp=StringUtil.getFromBASE64(temp.substring(8,temp.indexOf("?=")-1));
[*]}else{
[*]temp=StringUtil.toChinese(temp);//该办法如前所叙
[*]}
[*]
[*]/////////////StringUtil的getFromBASE64办法/////////
[*]
[*]publicstaticStringgetFromBASE64(Strings){
[*]if(s==null)returnnull;
[*]BASE64Decoderdecoder=newBASE64Decoder();
[*]try{
[*]byte[]b=decoder.decodeBuffer(s);
[*]returnnewString(b);
[*]}catch(Exceptione){
[*]returnnull;
[*]}
[*]}
乱码成绩的调试步骤总结:
基础上在javamail中碰着的中文乱码成绩就这么多了,假如你的程序呈现了中文乱码,起首不要惊惶,可用多个其他的邮件发送或吸收程序举行考证,看是在哪一个环节呈现了成绩,然后再细心对比原文和乱码,挪用响应的编码解码办法就好了。
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大. 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种突破用户端机器环境和CPU 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
页:
[1]