web 开发 字符集 问题

阿斯兰 发表于 2007-03-28 15:15:49

在jsp里 <%@ page contentType="text/html; charset=GB2312"%>

在xml中的JDBC相应url中带参数形如:jdbc:mysql://localhost:3306/huangguan?useUnicode=true&amp;characterEncoding=gbk

或修改数据库默认字符集为GBK
如mysql的修改windows下的my.ini文件加上一句:
set-variable=default-character-set=gbk

tomcat启动时带参数:-Dfile.encoding=GB2312
可用javaservices加到服务中将JavaService.exe拷到bin下,在cmd下运行:
tomcat.exe -install Tomcat
{JDK_HOME}\jre\bin\{hotspot|server|classic}\jvm.dll
-Djava.class.path={TOMCAT_HOME}\bin\bootstrap.jar;{TOMCAT_HOME}\bin\servlet.jar;{JDK_HOME}\lib\tools.jar
-Dcatalina.home={TOMCAT_HOME}
-Dfile.encoding=GB2312
-start org.apache.catalina.startup.Bootstrap
-params start
-stop org.apache.catalina.startup.Bootstrap
-params stop
-out {TOMCAT_HOME}\logs\stdout.log
-err {TOMCAT_HOME}\logs\stderr.log

不加到服务中则修改bin\catalina.bat文件
在“rem Execute Java with the applicable properties”一句后加上:
set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=GB2312

对于JSP程序而言,编写完代码后就交给Container,首先它们会被转成.java文件,然后编译成.class才能提交给服务器执行.这个过程也存在字符编码问题.java编译器(javac)使用操作系统的语言环境作为默认的字符编码方式,JRE(Java Runtime Environment)也是这样。只有当编译和运行环境的字符编码方式与存储源文件的编码方式相同时,中文字符才能正确地显示。否则就需要在运行时进行转码,使它们使用兼容的编码。这里的设置可以分为几个层次:操作系统层支持的语言,这是最重要的,因为它会影响JVM的默认字符编码方式,同时对字符的显示,如字体等有直接影响;J2EE服务器层,大多数服务器都可以对字符编码进行自定义的配置,例如Tomcat就可以通过web.xml中设置 javaEncoding参数设置字符编码,默认是UTF-8.

IE也可以设置成总是使用UTF-8编码来发送请求.应用程序层,每个配置在服务器下的程序都可以设置自己的编码方式,这个我目前还没有用到,以后再学习。

 运行时的转码,运行时期,应用程序很可能需要与外部系统进行交互,例如对数据库进行读写,对外部文件进行读写.在这些情况下,应用程序免不了要和外部系统进行数据交换。那么对于中文字符,数据出入口的编码方式就显得特别重要了。一般外部系统都有自己的字符编码方式,我的例子中配置的MySQL就是使用的UTF-8编码。JSP页面通过设定"charset=gb2312",

使用gb2312编码,在它与数据库交互的时候就需要进行显式的转码才能正确处理中文字符

最新评论

发表评论

*昵称

已经注册过? 请登录

Email
网址
*评论