我有一个页面跳到action 中的程序中出现乱码,请大家帮帮忙
页面是这样的
<%@page contentType="text/html; charset=GBK"%>
<%@ taglib prefix="ww" uri="webwork" %>
<html>
<body>
<table align="center">
<form action="add_do.action" method="post">
<p align="center">
<br>
编号:<ww:property value="id" />
<input name="id" type="hidden" value="<ww:property value="id"/>">
</p>
姓名:
<input type="text" name="name">
<br>
地址:
<input type="address" name="address">
<br>
<input type="submit" value="增加">
<input type="reset" value="取消">
</form>
</table>
</body>
</html>
跳到 action中接收姓名和地址就出现乱码了,转换了也不好使,大家帮帮忙,action是
public String add_do() throws Exception {
System.out.println(name+address);
name=new String(name.getBytes("iso-8859-1"), "gb2312");
address=new String(address.getBytes("iso-8859-1"), "gb2312");
System.out.println(name+address);
打印出来的都是乱码
页面是这样的
<%@page contentType="text/html; charset=GBK"%>
<%@ taglib prefix="ww" uri="webwork" %>
<html>
<body>
<table align="center">
<form action="add_do.action" method="post">
<p align="center">
<br>
编号:<ww:property value="id" />
<input name="id" type="hidden" value="<ww:property value="id"/>">
</p>
姓名:
<input type="text" name="name">
<br>
地址:
<input type="address" name="address">
<br>
<input type="submit" value="增加">
<input type="reset" value="取消">
</form>
</table>
</body>
</html>
跳到 action中接收姓名和地址就出现乱码了,转换了也不好使,大家帮帮忙,action是
public String add_do() throws Exception {
System.out.println(name+address);
name=new String(name.getBytes("iso-8859-1"), "gb2312");
address=new String(address.getBytes("iso-8859-1"), "gb2312");
System.out.println(name+address);
打印出来的都是乱码
解决方案 »
- 有谁知道amdocs公司的2008下半年的录取时间??
- Eclipse即在Tomcat中,如何自动生成JSP页面后,让它可以访问?
- struts2配置问题
- 吐血看不懂-纯javascript作的左右列表内容互换
- JSP中对数据库操作的问题,请指教!
- Hibernate synchronizer从哪里可以下载到呀?
- 仅两行代码一直报错,望高人指点,马上给分
- 取不到提交后的表单数据,请帮忙看一下.谢谢!
- 请大家帮我看看为什么我jsp得不到javabean的返回值???
- 编码转化了,还是乱码,大家帮帮忙,在线等待!
- 登录页面:选择以前输入的用户,会自动带出密码,怎么解决啊,我该怎么办,求大家帮忙解决!??~~
- 使用ibatis连数据库的中文乱码问题,急等!!
request.setCharacterEncoding("GB2312");
response.setContentType("text/html;charset=GB2312");
接收参数的时候用 request.getParameter()像这个String name=new String(request.getParameter("name").getBytes("8859_1"));String address=new String(request.getParameter("address").getBytes("8859_1"));out.print(name+address);
给你段程序用.public class zhuanma {
public static String GBKtoISO8859(String str) {
try {
byte[] bytesStr = str.getBytes("gbk");
return new String(bytesStr,"ISO8859_1");
}catch(Exception e) {
return str;
}
}
}
/*
* Created on 2004-7-14
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package net.iyun.util;/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class LocaleConvert {
public static String ISO8859toGB2312(String str) {
try {
byte[] bytesStr = str.getBytes("ISO8859_1");
return new String(bytesStr,"gb2312");
}catch(Exception e) {
return str;
}
}
public static String ISO8859toGBK(String str) {
try {
byte[] bytesStr = str.getBytes("ISO8859_1");
return new String(bytesStr,"GBK");
}catch(Exception e) {
return str;
}
}
public static String GB2312toISO8859(String str) {
try {
byte[] bytesStr = str.getBytes("gb2312");
return new String(bytesStr,"ISO8859_1");
}catch(Exception e) {
return str;
}
}
public static String GBKtoISO8859(String str) {
try {
byte[] bytesStr = str.getBytes("gbk");
return new String(bytesStr,"ISO8859_1");
}catch(Exception e) {
return str;
}
}
}
我用的webwork和tomcat搭的一个程序,首先是要在webwork.properties中加webwork.tag.altSyntax=true
webwork.i18n.encoding = GB2312这两句每个页面都统一成这样的编码<%@ page contentType="text/html; charset=gb2312"%>,我还发现一个问题,在<ww:iterator>标签中的text不用编码类型转换,直接在action中就可以得到,如果不在<ww:iterator>中的text必需得用name=new String(name.getBytes("iso-8859-1"), "gb2312");进行编码转换。
要经过编码、解码和转码的过程,使用pageEncoding属性表示文件(如jsp)本身的编码,用ContentType指定由用品发送给客户端时内容的编码。
name=new String(name.getBytes("iso8859-1"), "gb2312");
address=new String(address.getBytes("iso8859-1"), "gb2312"); 你也可以自己写一个类 要继承RequestProcessor,然后重写processPreprocess方法
protected boolean processPreprocess(HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("GBK");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
这样就可以解决转码问题了,那在struts中就不要区做转码的动作了