from提交的中文信息会有乱码?

bsccxf 2008-03-10 04:08:11
我用的是STRUTS+ORACLE,在STRUTS的JSP页面的form中有的中文字段,
一般常见的中文字,提交后,数据库里显示正确,但对于少见的汉字,保存到数据库后就成乱码了,如篬\肏 等字,
debug发现FORM提交到ACTION的时候就已经是乱码了.

现急寻解决办法.
...全文
349 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
青草样的忧郁 2008-03-19
  • 打赏
  • 举报
回复
在jsp页面中<%@ page contentType="text/html; charset=GB2312"%>
在action中转化一下再插入数据库
String bm = request.getParameter("bm");
if(bm==null){bm = "";}
else{bm=new String(bm.getBytes("ISO8859-1"),"GB2312");}
bsccxf 2008-03-19
  • 打赏
  • 举报
回复
有谁遇到过这个问题吗
sonstar 2008-03-17
  • 打赏
  • 举报
回复
更改编码方式,你现在在用的编码方式的字库中没有出现乱码的字。
bsccxf 2008-03-17
  • 打赏
  • 举报
回复
谢谢啊

我先试试
ctxz168 2008-03-17
  • 打赏
  • 举报
回复
你写个过滤器
toshiba_java 2008-03-17
  • 打赏
  • 举报
回复
生僻字在gb2312中无对应,所以需换用gbk
jwebcn 2008-03-17
  • 打赏
  • 举报
回复
java相关域名贱卖,随便给点钱就卖了。在ename注册的,过户超简单,可当场过户立即生效。可1块钱续费一年。可登陆后台,自主管理域名解析、url指向等操作。给你的技术blog来一个个性的域名吧,有简单有好记,告诉朋友也不用拷贝复杂的url地址了。有兴趣的联系QQ:913144 支付宝付款。

j2mes.cn 寓意(j2me复数形式)
4j2ee.cn 寓意(谐音for j2ee )
j2ees.cn 寓意(j2ee复数形式)
1jsp.cn 寓意(第一jsp)
4j2me.cn 寓意(谐音for j2me)

另有价值域名两个,有意联系。
jweb.cn 寓意:java's web (java web)
onjava.cn 与oreilly门户网站onjava.com同名域名
xiaocainiao0703 2008-03-12
  • 打赏
  • 举报
回复
1,如果底层是用hibernate的话,需要+条属性(待查)
2,传递参数的方法是post还是get,如果是get的话,它在传递的时候经过了一步URL的编码
东家阿哥 2008-03-12
  • 打赏
  • 举报
回复
以上方法只能保证Struts业务处理中的编码不乱,还有一个原因是数据库的编码,你再查看一下。
东家阿哥 2008-03-12
  • 打赏
  • 举报
回复
给你说一种从根本上消除乱码的方法,就是拦截Action请求设置编码为UTF-8.
在struts-config.xml这样配置:
<controller processorClass="res.MyRequestProcessor"/>
<message-resources parameter="MessageResources"/>

于res包下编写这样Java代码:
package res;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.RequestProcessor;

public class MyRequestProcessor extends RequestProcessor {

public MyRequestProcessor() {}

protected boolean processPreprocess( HttpServletRequest request,
HttpServletResponse response ){
try{
request.setCharacterEncoding("UTF-8")
}catch(Exception ex){
System.out.println("字符集设置失败");
}

return true;
}
}

frank_zu 2008-03-11
  • 打赏
  • 举报
回复
用servlet过滤一下request,整个页面用UTF-8编码,参数用new String(xx.getBytes("iso-8859-1"),"UTF-8")包装一下
bsccxf 2008-03-11
  • 打赏
  • 举报
回复
生词都有的
Brokenfango 2008-03-10
  • 打赏
  • 举报
回复
估计你用的词库没有该生僻字
ee4456 2008-03-10
  • 打赏
  • 举报
回复
论坛抽着呢,都回不了帖子,再不行在action里这样,request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
全加上,试试。,。还有你工程中的必须都是一样的字符级,保持一致
ee4456 2008-03-10
  • 打赏
  • 举报
回复
论坛抽着呢,都回不了帖子,再不行在action里这样,request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
全加上,试试。,。还有你工程中的必须都是一样的字符级,保持一致
ee4456 2008-03-10
  • 打赏
  • 举报
回复
论坛抽着呢,都回不了帖子,再不行在action里这样,request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
全加上,试试。,。还有你工程中的必须都是一样的字符级,保持一致
bsccxf 2008-03-10
  • 打赏
  • 举报
回复
比如我在中文字段输入 "你好篬",actionfrom里接收到的是"你好?H",存到数据库里也就不对了,
数据库里改成"你好篬",查询到JSP页面显示为"你好?"
ee4456 2008-03-10
  • 打赏
  • 举报
回复
<%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK" pageEncoding="GBK"%>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
把页面改成头这样看看
String str=new String(中文字符,"gb2312");
转换一下看看
xls024 2008-03-10
  • 打赏
  • 举报
回复
將整個工程的字符集該為GBK試試
ee4456 2008-03-10
  • 打赏
  • 举报
回复
<%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK" pageEncoding="GBK"%>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
把页面改成头这样看看
String str=new String(中文字符,"gb2312");
转换一下看看
加载更多回复(2)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧