在JSP/servlet中的中文解决办法XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />
Java的中文问题一直很让人头痛。也许是因为有中文有很多字符集的缘故吧。
这里我们先说Servlet的问题。
众所周知,Servlet是需要预先编译的,就不得不谈到java的编译问题。
Java内容是使用Unicode字符集的。所以基本上可以对大多数语言提供支持(当然,如果你会某种特殊的不常见的语言,Java就不一定支持了),所以相对来说,Java对多语言的支持相当好,甚至你可以使用中文的类名和中文的方法名,编译运行同样没有问题。但是大多数的操作系统并不是都对Unicode提供良好的支持,至少Javac默认是使用系统自带的字符集来进行编译,例如:如果你的操作系统是中文Win2k,那么你的默认字符集就是GBK;如果你使用的是日文的win2k,那么你的默认字符集就是MS932。而Javac默认是调用系统的字符集进行编译,也就是Javac中的Encoding参数默认的是使用系统的字符集。知道了这一点这个问题就容易解决了。如果你的程序中包含了不被当前系统默认字符集支持的字符,那么你需要制定你的字符集来进行编译了。不过偶尔也会有一些问题,不过这个不是java的问题了。就拿记事本来说,如果你用记事本写程序那么保存程序的时候就会使用记事本默认的Ansi字符编码方式来保存。这种情况同样也容易导致乱码的产生,所以在使用ide的时候最好同时制定他的编码方式。
现在说说Jsp的问题。
这个处理起来相对简单一些,只要你在页头上指定了类似Mailto:%25@page%20language=%22java%22%20contentType=%22text/html;charset=UTF-8%22%20%25">%@page language="java" contentType="text/html;charset=UTF-8" %这样的语句,基本上就没有问题了。同样需要你的IDE制定一个字符编码,避免出现乱码问题。
以上简单的解决了中文乱码的问题。不过我个人觉得这并不是一个最好的解决办法,因为你还受到系统和IDE的字符集的限制,在实现跨平台的时候还是容易出现问题。我要接受我比较欣赏的一种方法,也许这种方法大家现在都已经在用了。
我推荐使用Properties文件来保存相应的文本信息,这样做有如下优点:
1. 可以很灵活的替换文本,实现多语言界面。
2. 可以根本性的避免乱码问题
第一点我不说大家也能体会得到。重点说说第二点。
jdk中自带了一个nactive2acsii的命令,这个命令是把当前字符转化成ascii字符。
当前并不是所有的操作系统都支持unicode或者其他的什么字符编码,但是据我所知对于ascii码都是支持的,所以我们只要把我们的文本转化成ascii码就可以了。而通过nactive2acsii就可以实现这个功能了。这个程序在Java_Home/Bin下面。各位可以自己试验一下。
版权归iBeyond所有,你也许可以通过http://www.ibeyond.org得到更多信息,你也可以通过csdn@ibeyond.org和我联系。