| wingger 回复于:2004-10-10 11:03:56 |
| UP |
| haohaoo 回复于:2004-10-11 11:59:47 |
| MM施主,俺崇拜你了 |
| wingger 回复于:2004-10-12 11:50:30 |
| 补充:
如果使用php,也可以定义php的默认语言. php.ini中: ;default_charset = "gb2312" 注意这里是注释掉此行,做了以上修改,目的是为让浏览器根据网页头中的charset来自动选择语言,这样就可以在同台服务器上提供多种语言的网页服务。 |
| wingger 回复于:2004-10-12 12:31:33 |
| [b:d5682680d6]java中文乱码的解决 [/b:d5682680d6]
转 在基于JAVA的编程中,经常会碰到汉字的处里及显示的问题,比如一大堆乱码或问号。 这是因为JAVA中默认的编码方式是UNICODE,而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码,故会出现此问题。 [b:d5682680d6]1、在网页中输出中文。[/b:d5682680d6] JAVA在网络传输中使用的编码是"ISO-8859-1",故在输出时需要进行转化,如: String str="中文"; str=new String(str.getBytes("GB2312"),"8859_1"); 但如果在编译程序时,使用的编码是“GB2312”,且在中文平台上运行此程序,不会出现此问题,一定要注意。 [b:d5682680d6]2、从参数中读取中文[/b:d5682680d6] 这正好与在网页中输出相反如: str=new String(str.getBytes("8859_1"),"GB2312"); [b:d5682680d6]3、操作DB中的中文问题[/b:d5682680d6] 一个较简单的方法是:在“控制面扳”中,把“区域”设置为“英语(美国)”。如果还会出现乱码,还可进行如下设置: 取中文时:str=new String(str.getBytes("GB2312")); 向DB中输入中文:str=new String(str.getBytes("ISO-8859-1")); [b:d5682680d6]4、在JSP中的中文解决:[/b:d5682680d6] 在“控制面扳”中,把“区域”设置为“英语(美国)”. 在JSP页面中加入: 如果还不行正常显示,则还要进行下面的转换: 如:name=new String(name.getBytes("ISO-8859-1"),"GBK"); 就不会出现中文问题了。 |
| level 回复于:2004-10-12 12:39:34 |
| :em02: |
| wingger 回复于:2004-10-12 12:49:43 |
| CGI的应该是这个:
找到CGI.pm,找到$self->charset('ISO-8859-1');将它改为$self->charset('GB2312'); 或按以上同样处理,应该可以 |
| wingger 回复于:2004-10-31 14:59:03 |
| [b:4f9bb7984a]彻底解决Tomcat 5.0.19中文乱码[/b:4f9bb7984a]
[b:4f9bb7984a]一、Include的页面乱码[/b:4f9bb7984a] 现象:include进来的页面出现乱码,其它页面正常。 原因:Tomcat在缺省情况下使用ISO-8859-1编码,但是在include时有时Tomcat不能正确根据外层.jsp文件的编码解析include进来的文件,造成include进来的文件中的中文乱码。 解决:这儿可以有很多解决办法,但是对于我们的中文环境,从根本上的解决办法是将Tomcat 5.0.19的核心缺省编码从ISO-8859-1修改为GBK 。 [b:4f9bb7984a] 二、提交的数据乱码[/b:4f9bb7984a] 现象:通过表单提交的数据出现乱码。 原因:原因未明。可能是Tomcat在接收到请求后,并没有能够根据request中的信息提前正确的编码方式。 解决:可以添加一个设置字符集的Filter。 [code:1:4f9bb7984a]package filters; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.UnavailableException; public class SetCharacterEncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true; public void destroy() { this.encoding = null; this.filterConfig = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // Conditionally select and set the character encoding to be used if (ignore || (request.getCharacterEncoding() == null)) { String encoding = selectEncoding(request); if (encoding != null) request.setCharacterEncoding(encoding); } // Pass control on to the next filter chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); String value = filterConfig.getInitParameter("ignore"); if (value == null) this.ignore = true; else if (value.equalsIgnoreCase("true")) this.ignore = true; else if (value.equalsIgnoreCase("yes")) this.ignore = true; else this.ignore = false; } protected String selectEncoding(ServletRequest request) { return (this.encoding); } } [/code:1:4f9bb7984a] [b:4f9bb7984a]配置web.xml[/b:4f9bb7984a] [code:1:4f9bb7984a]<filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> [/code:1:4f9bb7984a] |
| wingger 回复于:2004-10-31 15:05:12 |
| [b:a9fede05e2]没试过不知道行不行[/b:a9fede05e2]
[b:a9fede05e2]java Servlet 中文乱码问题[/b:a9fede05e2] [code:1:a9fede05e2]import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class GetFormData extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { String paramValues; paramValues=request.getParameter("UserName"; response.setContentType("text/html;charset=gb2312"; PrintWriter out=response.getWriter(); out.println("<html><title>test</title><body>"; out.println("以下是收到的数据<br>"; out.println("UserName="+paramValues); out.println("<br>接收结束"; out.println("</body>"; } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { doGet(request,response); } }[/code:1:a9fede05e2] 只需要把 [code:1:a9fede05e2]paramValues=request.getParameterValues("UserName"改成下面的就可以了 paramValues=request.getParameter("UserName";[/code:1:a9fede05e2] [code:1:a9fede05e2]当然这句是必須的 response.setContentType("text/html;charset=gb2312"[/code:1:a9fede05e2] 在jsdk2.1 tomcat及Domino5.8上的Servlet引擎运行通过了 |
| wingger 回复于:2004-10-31 15:09:55 |
| [b:d1ef992b65]Weblogic Server中如何解决中文显示乱码问题
《世界计算机》IT.ICXO.COM ( 日期:2004-09-29 16:07) [/b:d1ef992b65] -------------------------------------------------------------------------------- 由于操作系统、浏览器、数据库、JVM采用的字符集都不一样,基于Weblogic Server开发的应用经常出现中文显示乱码问题,其实在Weblogic Server上运行的WEB应用有很多与字符集有关的设置,下面做一个总结,为了正确处理中文,最好把这些设置都设上。 [b:d1ef992b65]1. 在JSP文件头加入[/b:d1ef992b65] [code:1:d1ef992b65]<%@ page contentType=text/html; charset=GBK %> [/code:1:d1ef992b65]指定该JSP采用的字符集。 [b:d1ef992b65]2.在Weblogic.xml文件的中加入:[/b:d1ef992b65] [quote:d1ef992b65]encoding GBK[/quote:d1ef992b65] 指定JSP文件中采用的字符集,在JSP文件中的<%@ page contentType=text/html; charset=GBK %>会覆盖该设置 [b:d1ef992b65]3.在Weblogic.xml文件的中加入[/b:d1ef992b65] [code:1:d1ef992b65]compilerSupportsEncoding true[/code:1:d1ef992b65] 如果为TRUE,指定在编译JSP文件时,采用在JSP文件中定义的 <%@ page contentType=text/html; charset=GBK %>或中定义的encoding参数中定义的字符集进行编码,如果为FALSE,则采用JVM中默认指定的字符集进行编码。 [b:d1ef992b65]4. Weblogic Server需要把HTTP request(GET 和POST)中的数据从它的原始编码转化为Unicode,以便Java servlet API进行处理[/b:d1ef992b65],为了做这种转换,Weblogic Server需要知道HPPT request中的数据的编码方式。这可以通过在Weblogic.xml的中设置. [code:1:d1ef992b65]〈INPUT-charset> / GBK[/code:1:d1ef992b65] [b:d1ef992b65]5.从ORACLE数据库中检索出来的中文显示不正确时[/b:d1ef992b65],在这种情况下,如果数据库使用的是中文字符集,并使用的是Type 2 JDBC Driver时,可加入Weblogic.codeset=GBK的属性来解决这个问题。代码如下: [code:1:d1ef992b65]java.util.Properties props = new java.util.Properties(); props.put(Weblogic.codeset, GBK); props.put(user, scott); props.put(password, tiger); String connectUrl = jdbc:Weblogic:oracle; Driver myDriver = (Driver) Class.forName(Weblogic.jdbc.oci.Driver).newInstance(); Connection conn = myDriver.connect(connectUrl, props);[/code:1:d1ef992b65] [b:d1ef992b65]6. 如果是采用WTC调用Tuxedo中的服务[/b:d1ef992b65],在JSP页面中无法正确显示中文,必须使安装Tuxedo的服务器上的NLS_LANG环境变量与数据库中的字符集的设置一样。如后台Oracle数据库中的字符集设置为SIMPLIFIED CHINESE_CHINA.ZHS16GBK,那么Tuxedo应用服务器上的NLS_LANG环境变量应设置为: [code:1:d1ef992b65]export NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK[/code:1:d1ef992b65] |
| clearcase/" target="_blank" >ccwwd 回复于:2004-11-22 14:39:26 |
| 崇拜你呀! |
| hitty 回复于:2005-07-06 14:09:16 |
| 利害,加我吧....
PHP中文乱码好像可以用: ini_set('default_charset','gb2312'); 来解决,要比改配置文件要灵活一些.... |