ITPub博客

首页 > 应用开发 > IT综合 > 暂时解决的中文问题

暂时解决的中文问题

原创 IT综合 作者:mouqj 时间:2007-09-01 17:22:36 0 删除 编辑
使用JSP容器,Tomcat,
1,从数据库读出字段内容,显示乱码。
问题:怀疑是驱动问题。
暂时解决:在JSP页面中嵌入函数:

<%!
public String getCrtStr(String str){
return new String(str.getBytes("ISO-8859-1"),"gb2312"); //有效
}

%>

<%

...

materialName = getCrtStr(materialName); //有效

...

%>

2另一种乱码现象,在servlet中

String subject=request.getParameter("subject");//接收一个中文
String content=request.getParameter("content");//接收一个中文

结果在后台打印为乱码

尝试1,使用new String(str.getBytes("ISO-8859-1"),"gb2312"); 转为GB2312格式,失败

尝试2,使用new String(str.getBytes("GB2312"),"8859_1");转化为8859_1格式,仍然失败

尝试3,在接收参数前,调用request.setCharacterEncoding("GBK");失败,

尝试4,在接收参数前,调用request.setCharacterEncoding("utf-8");成功!

注意到所有的JSP文件都是utf-8格式,JSP页面中编码都为utf-8,因此尝试4得以成功。

不过这种格式似乎并不值得推荐,ansi格式外加GBK编码更加值得使用吧。

3,尽管在插入数据库前中文字符已经,但是执行insert语句之后,数据库中出现中文字符乱码!

在查询分析其中执行

insert into article(CategoryID,Subject,Content) values(1,'你好','你好');

数据库中出现乱码,此时在中文字符前加N,则可以解决这个问题

insert into article(CategoryID,Subject,Content) values(1,N'你好',N'你好');OK,因此,解决servlet中insert乱码问题,只需要修改原来的语句(加N),最终形式如下:

String sqlStr = "insert into article(CategoryID,Subject,Content) values("+
classID+",N'"+
subject+"',N'"+
content+"')";

4,对于nvarchar和varchar类型的字段,中文问题可以解决,但是text类型的字段,始终不得其解,只能暂时绕过,有待研究。

另外把一个UTF8编码的JSP存为ANSI格式,则除了数据库取出的文字,其余都会产生乱码。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11049438/viewspace-967499/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Oracle分页
请登录后发表评论 登录
全部评论
  • 博文量
    33
  • 访问量
    116184