将request.getParameter("name").getBytes("ISO-8859-1"))换成
new String(request.getParameter("name").getBytes("8859_1"),"gb2312")
new String(request.getParameter("name").getBytes("8859_1"),"gb2312")
解决方案 »
- 点击href后如何执行js代码
- 共同交流,一起进步
- struts 2拦截器问题
- jasperReport报表html格式问题
- jsp页面刷新几次经常出现java.lang.NullPointerException,请高手指点!
- 关于《Core Servlet and JavaServer Pages》中的Servlet Life Cycle不太明白
- marquees 怎么在select 列表中实现滚动效果,而且是连续不间断的滚动
- sql语句怎么查不到记录??简单的问题
- JNI将类的实例作为参数传递参数应该怎样操作???
- 跪求大神进来指导一下我这个菜鸟,跪谢
- 关于拥护退出登入的session如何注销的问题?
- struts的配置,关于servlet
&#xh586
原因:server缺省使用ISO-8859-1方式来处理
解决:添加过滤器
TOMCAT安装目录webapps\servlets-examples\WEB-INF\classes\filters
\SetCharacterEncodingFilter.java文件提供了过滤功能,添加到自己的
Web应用中,修改一下package等设置。
在应用的web.xml里加入声明:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GB2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
原理:filter声明过滤器将负责Web应用 /* 即所有请求的过滤
将其request对象的编码改变为GB编码,具体见filter类内详细代码问题:直接通过URL的get请求乱码,如http://aa.bb.com/index.jsp?a=男&b=女,其中的中文不正常
原因:Tomcat5.x中QueryString的处理方式与表单不同,所以除了过滤器,还需要改设置
解决:修改Tomcat的conf/server.xml文件,为Connector元素添加URIEncoding元素,指定字符集
<Connector port="80" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GB2312"/>
原理:此属性可以迫使Tomcat服务器在处理URL的get请求时,使用指定的字符集来处理
记得你所有的页面都要设为GB2312编码的
在取变量之前加上
request.setCharacterEncoding("GBK");如:
request.setCharacterEncoding("GBK");
request.getParameter("name");就没问题了!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.nettoo.com.cn/">
<% response.setContentType("text/vnd.wap.wml"); %> <wml>
<card id="start">
<p>sdf<br/>
fffAcceptfff<br/> </p>
<p>
用户ID:<input name="uid" size="15"/><br/>
密码:<input name="upwd" type="password" size="15"/><br/>
</p>
<img src="images/111.jpg" alt="haohao"/>
</card>
</wml> 中文是这样的用户拷贝上面那些就可以了
private static final String POS_FIX_UTF = ";"; public TranCharset() {
} /**
* Translate charset encoding to unicode
*
* @param sTemp charset encoding is gb2312
* @return charset encoding is unicode
*/
public static String XmlFormalize(String sTemp) {
StringBuffer sb = new StringBuffer(); if (sTemp == null || sTemp.equals("")) {
return "";
}
String s = TranCharset.TranEncodeTOGB(sTemp);
for (int i = 0; i < s.length(); i++) {
char cChar = s.charAt(i);
if (TranCharset.isGB2312(cChar)) {
sb.append(PRE_FIX_UTF);
sb.append(Integer.toHexString(cChar));
sb.append(POS_FIX_UTF);
} else {
switch ((int) cChar) {
case 32:
sb.append(" ");
break;
case 34:
sb.append(""");
break;
case 38:
sb.append("&");
break;
case 60:
sb.append("<");
break;
case 62:
sb.append(">");
break;
default:
sb.append(cChar);
}
}
}
return sb.toString();
} /**
* 将字符串编码格式转成GB2312
* @param str
* @return
*/
public static String TranEncodeTOGB(String str) {
try {
String strEncode = TranCharset.getEncoding(str);
String temp = new String(str.getBytes(strEncode), "GB2312");
return temp;
} catch (java.io.IOException ex) { return null;
}
} /**
* 判断输入字符是否为gb2312的编码格式
*
* @param c 输入字符
* @return 如果是gb2312返回真,否则返回假
*/
public static boolean isGB2312(char c) {
Character ch = new Character(c);
String sCh = ch.toString();
try {
byte[] bb = sCh.getBytes("gb2312");
if (bb.length > 1) {
return true;
}
} catch (java.io.UnsupportedEncodingException ex) {
return false;
}
return false;
} /**
* 判断字符串的编码
*
* @param str
* @return
*/
public static String getEncoding(String str) {
String encode = "GB2312";
try {
if (str.equals(new String(str.getBytes(encode), encode))) {
String s = encode;
return s;
}
} catch (Exception exception) {
}
encode = "ISO-8859-1";
try {
if (str.equals(new String(str.getBytes(encode), encode))) {
String s1 = encode;
return s1;
}
} catch (Exception exception1) {
}
encode = "UTF-8";
try {
if (str.equals(new String(str.getBytes(encode), encode))) {
String s2 = encode;
return s2;
}
} catch (Exception exception2) {
}
encode = "GBK";
try {
if (str.equals(new String(str.getBytes(encode), encode))) {
String s3 = encode;
return s3;
}
} catch (Exception exception3) {
}
return "";
}
}转utf8的工具
<a href="wap.jsp?name=$(namee)">submit</a>在
request.getParameter("name").getBytes("ISO-8859-1"))获得的参数值是乱码的。
我不是要把中文变成用户这样的utf-8编码。
我是要接收中文数据。request.getParameter("name").getBytes("ISO-8859-1"))
在普通的Web方式下接收是正常的,但接收WAP数据时不正确。
获得的中文参数是乱码。总是输出??
http://www.yulewu.com/wap
我的是asp的,大家帮我也看一下吧。
一定是楼主给错分了!!
:(