客户用C语言的一个程序访问我给他指定的一个网页,然后我这个网页需要给他返回一个字符串,可是返回字符串的编码与他的要求的不一致,我们返回的是gbk编码,而客户需要utf-8编码。客户现在要求我们改。 服务器环境:window2003+weblogic9.2+oracle9.2
下面方法都试过,编码还是没有转换成功。返回的仍是gbk,请高手指点一下,将不甚感激。
-Dfile.encoding=UTF-8 -Dweblogic.webservice.i18n.charset=UTF-8
符集设置分很多种,关键看系统统一规范定义用那一种字符集,我这假设你用的是GBK这种字符集作为统一编码,那么分一下常用的情况:
1、如果JSP文件中写死的中文,在weblogic中发布后,不能正确编译,一般使用在weblogic.xml文件中增加一个(WebLogic.xml很多,你可以在你的工程的WEB-INF下增加一个自己的也可以,它的优先级也是最高的,只要按照统一规范去编写这个XML文件),如果是有些自带的,你可以查看下里面有没有jsp-descriptor项,如果没有就手动加,如��有,就加内容就行了:
<jsp-descriptor>
<jsp-param>
<param-name>compilerSupportsEncoding</param-name>
<param-value>true</param-value>
</jsp-param>
<jsp-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</jsp-param>
</jsp-descriptor>
2、如果跟踪到从数据库读取出来是乱码,数据库是采用GBK编码的,那么在weblogic启动时增加项:Weblogic.codeset=GBK
3、如果数据是通过response传送中出现乱码(如ajax调用、页面字节输出、内容输出,这种在windows下一般不会遇到,移植系统的时候可能会遇到),此时在你web.xml的<web-app></web-app>中间加入:
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
</context-param>
4、中文写死的内容可以正确编译,但是在weblogic上发布上去是乱码,一般在页面上写出:
<%@ page contentType=text ml; charset=GBK %>
5、如果是因为本机非中文操作系统,或者本机浏览器默认是英文,导致无法正确显示中文;那么此时在JSP界面上写上:
<meta http-equiv=Content-Type content=text ml charset=gbk>
该贴由koei转至本版2014-5-2 16:07:39