首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

又是jsp的中文有关问题,头都大

2012-04-18 
又是jsp的中文问题,头都大!环境:英文win2k+tomcat+英文sqlserver2000很简单就是用一个类读取表中内容(在库

又是jsp的中文问题,头都大!
环境:   英文win2k   +   tomcat   +   英文sqlserver2000
很简单就是用一个类读取表中内容(在库里是中文的,没问题),问题是读出来的都变成了??,  

页面如下   :   test.jsp
<%@   page   pageEncoding= "GBK "%>
<%@   page   contentType= "text/html;charset=GBK "   autoFlush= "true "%>
<%@   page   import= "com.test.* "%>
 
<html>
<head>
<title> test </title>  
</head>
<BODY>
<%   request.setCharacterEncoding( "GBK ");  
        String   testid= "294 ";
        MyTest   mt=   new   MyTest()   ;
                                            String   name=   mt.getName(testid);
                          String   username=   new   String(name.getBytes( "ISO8859_1 "));
              out.println( "用户名字: "+username);
%>    
</body>
</html>

[解决办法]
用一个过滤器什么问题都解决,不用写什么request.setCharacterEncoding( "GBK ")
[解决办法]
<%@ page pageEncoding= "GBK "%>
<%@ page contentType= "text/html;charset=GBK " autoFlush= "true "%>

????????????????????????呵呵,不显示中文也不用两个都写上吧

这个地方:

MyTest mt= new MyTest() ;
String name= mt.getName(testid);
String username= new String(name.getBytes( "ISO8859_1 "));
out.println( "用户名字: "+username);

改成:
MyTest mt= new MyTest() ;
String name= mt.getName(testid);
String username= new String(name.getBytes( "GB2312 "), "ISO-8859-1 ");
out.println( "用户名字: "+username);

试试看行不

你应该把逻辑装到Action中去做就清晰了
这么在页面上写太乱了!!!


[解决办法]
把String username= new String(name.getBytes( "GB2312 "), "ISO-8859-1 ");
该为String username= new String(name.getBytes( "ISO-8859-1 "), "GB2312 ");
试试
[解决办法]
把那该成 utf-8 就 OK 了
[解决办法]
在web.xml中加入过渡器
<!-- 字符编码转换 Character Encoding filter -->
<filter>
<filter-name> encodingFilter </filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name> encoding </param-name>
<param-value> UTF-8 </param-value>
</init-param>
</filter>

<!-- 字符编码的拦截器 Character Encoding filter -->
<filter-mapping>
<filter-name> encodingFilter </filter-name>
<url-pattern> *.do </url-pattern>
</filter-mapping>

[解决办法]
看看是不是sqlserver jdbc 驱动的原因. 以前也遇到过.不管怎么转就是不显示中文,后来换个新一点的驱动,一下就好了.


[解决办法]
1. 页面编码是否设置;

2. request、response 编码是否设置,或者是否采用过滤器进行编码处理;

3. 如果是地址栏上的字符,以上两项设置都是没有用的,需要更改 %TOMCAT_HOME%/conf/server.xml,在这个文件中可以找到两个 Connector 元素,在这个元素中加上“URIEncoding”属性,并将其值设为“GBK”、“UTF-8”或者是其他的编码,具体使用哪一个要看你的页面设置是哪一个,将该文件保存,重启 Tomcat 即可。

4. 同时将 A href 的那个 <%=keywords%> 改为 <%=URLEncoder.encode(keywords, "GBK ")%> ,将引入 <%@ page import= "java.net.URLEncoder " %> ,那个后面的编码,根据你的实际情况更改。encode 进行编码也很重要,特别是在字符集是“UTF-8”的情况下,不使用的话,可能造成奇数个字符会产生乱码。

看看这个可以帮助你吗》》

热点排行