回 帖 发 新 帖 刷新版面

主题:[原创]JSP字符转换乱码求助!!

请高手帮忙解决个问题!小弟刚学JSP做网站 数据库是MYSQL服务器是Lnuix配置是JKD5.0+Tomcat5.5.12.在运行调试阶段我遇到了一个难题!
先说明下!我是参考别人的东西做的!具体问题是在数据存入数据库时是能正确显示汉字!
但调用时候出现了问题!(网页使用gb2312和ISO88591编码和统一请求)
我反复调试发现问题出在下边几句 有谁能帮我看看解决下@!谢谢!
<%sql1 = "select * from "+board_table+" where board_audit=1 and type_id='"+type_id+"'";
rs1 = index_man.executeQuery(sql1);%>
</div></td></tr>
<%while(rs1.next()) {
board_name = rs1.getString("board_name");
board_id = rs1.getInt("board_id");%><tr><td align="center"> 
<a href="more_news.jsp?type_id=<%=type_id%>&board_id=<%=board_id%>&board_name=<%=board_name%>" target=_blank><%=board_name%></a></td>
其中的board_name=<%=board_name%>执行后出<%=board_name%>查询出的内容现乱码,还有<%=board_name%>中的"="号是什么意思啊!

回复列表 (共4个回复)

沙发

没有人吗?

板凳

建议你在程序里加上试试
string board_name = null;
srring board_id = null;


"(网页使用gb2312和ISO88591编码和统一请求)" 不太清楚是什么意思
建议使用 GB2312一种编码就可以了。不要引入太多头文件

"="在JSP里面是OUT.print输出的简单形式。而且必须和<%= 连在一起使用

希望对你能有所帮助[em2]

3 楼

[转帖]
1、在jsp页中加入一条语句: 
<%@ page contentType="text/html;charset=gb2312" %>中文显示就正常了。 

2、对于从网页中的文本框通过String parameter = request.getParameter(“parameter”);方式获得的字符串,均是8859_1的编码, 
如果想把它显示在网页上就必须得用parameter = new String(parameter.getBytes(“8859_1”),”gb2312”)进行转换,windows和linux这两种系统都是一样的。 
有一个简单方法,就是在 getParameter() 方法获取参数之前,使用request.setCharacterEncoding("GB2312");,将提交的信息转化为 GB2312 编码。 


3、但是对于将数据写入数据库的问题,采取的方式就不同了: 
windows下,必须要采用该字符串转换再插入数据库,而linux下就不需要,而是直接把8859_1编码的字符插入。 
如果从数据库中读出的数据,对于windows因为在插入时已经做了转换,所以读出时已经是gb2312的,当把它显示在网页上时,不需要做编码转换,而 linux上的mysql中的数据是8859_1的所以要做编码的转换。 

4、 如果你给某个字符串变量赋予一个中文字符串的值,那么在你取出他时,在网页上的显示是不需要做字符转换的, 
但是如果你要在linux下做字符的比较,则还需要把字符做parameter = new String(parameter.getBytes(“gb2312”),”8859_1”)的转换。 

4 楼

你看看这里:http://www.programfan.com/club/showbbs.asp?id=163396

我来回复

您尚未登录,请登录后再回复。点此登录或注册