jsp页面内的汉字显示为乱码,请教各位帮忙!

pp79 2003-08-22 07:56:43
目的:通过表单提交关键字,来查询数据库,并显示查询结果
问题: 当要这条语句时:<%@ page contentType="text/html;charset=gb2312" %>
表单提交的关键字显示为"????",而数据库查询结果中的汉字显示正常; 当不要上述这条语句时,表单提交的关键字显示正常,而数据库查询结果中的汉字显示为"????",我是新手,请大家给予指点!
我得处理表单数据的程序为:
<%@ page import="java.util.HashMap,java.util.Iterator" errorPage="error.page" %>

<%--**********下面这条语句在作怪*******--%>
<%@ page contentType="text/html;charset=gb2312" %>


<jsp:useBean id="searchBean" scope="page" class="connection.JDBCBean">
<jsp:setProperty name="searchBean" property="type"/>
<jsp:setProperty name="searchBean" property="key"/>
</jsp:useBean>

<%--**********下面两条语句显示出问题*******--%>
type:<%= request.getParameter("type") %><br>
key:<%= request.getParameter("key") %><br>

<% HashMap hp = searchBean.processResultSet();
Iterator iter = hp.keySet().iterator();
%>

<table>
<%
while(iter.hasNext()) {
String name = (String)iter.next();
String uri = (String)hp.get(name);
%>
<tr>
<td><%= name %></td>
<td><a href="<%= uri %>">download</a></td>
</tr>
<%
}

%>
</table>

A:这时显示结果为:
type:????
key:????
B:当不要这条语句:<%@ page contentType="text/html;charset=gb2312" %> 时显示结果为:
type:书籍
key:matlab
Matlab???? download
???? download




...全文
187 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
joincsdn 2003-08-23
  • 打赏
  • 举报
回复
request.setCharacterEnconding("GBK");
加上这句话看行不行
如果还不行的话,就把<%@ page contentType="text/html;charset=gb2312" %>给彻底删掉,然后老老实实的重写一遍,最好不要加空格
pp79 2003-08-23
  • 打赏
  • 举报
回复
感谢各位的热心指导,我用了 aku0708(阿酷)和luckyanyi(丫丫)的方法都可以解决问题,在此向二位表示特别感谢!当然还要感谢所有参予的各位。
seaman0916 2003-08-23
  • 打赏
  • 举报
回复
package beans ;
public class ISOtoGB2312
{
public String getConvert(String str)
{
try
{
byte[] byteStr=str.getBytes("ISO-8859-1");
return new String(byteStr,"gb2312");
}
catch(Exception e)
{
return str;
}
}
}

给你一个javabean ,显示时汉字时,使用它转换一下就可以了!
写成javabean 以后使用也很方便!

http://expert.csdn.net/Expert/topic/2181/2181304.xml?temp=.2040369

linday 2003-08-23
  • 打赏
  • 举报
回复
String text=request.getParameter("text");
if(!text.equals(null))
{
text=new String(textgetBytes("ISO-8859-1"));
}

处理一下
xharry 2003-08-23
  • 打赏
  • 举报
回复
charset=ISO8859_1
不要用gb2312,就可以了,如果你用mysql,在连接的时候也要制定字符集为ISO8859_1
woxiangwalkman 2003-08-23
  • 打赏
  • 举报
回复
在form域中可能是汉字的变量处理一下:
String text=request.getParameter("text");
if(!text.equals(null))
{
text=new String(textgetBytes("ISO-8859-1"));
}
zj2977 2003-08-22
  • 打赏
  • 举报
回复
根本不需要转换,我现在正在用jsp做一个项目,根本就没有中文处理问题!
quiton 2003-08-22
  • 打赏
  • 举报
回复
这个是学要转换的,因为中文处理的时候是需要转换的,这个问题很多书上都有,可是我现在不再实验室,具体的写法我有点忘了,很简单的!现在学校的校园网出了点问题,暂时上不了网,不过过几天就可以了!
有意请联系!
75446663
luckyanyi 2003-08-22
  • 打赏
  • 举报
回复
你试一试的接受参数之前加一句request.setCharacterEnconding("gb2312");
我用过这种方法在servlet中正确得到中文
zj2977 2003-08-22
  • 打赏
  • 举报
回复
用jdk1.3以上+resin就绝对不会有中文问题了,如果你偏要用jswdk,怎么处理都不行的,其实进行编码处理很不好,对你以后移植jsp解析器很不方便的!
stars_of_leo 2003-08-22
  • 打赏
  • 举报
回复
"大家一起谈一下jsp下的中文问题好吗?" 这篇文章讲的挺全的,
你搜索一下,收获挺大的。
祝你成功! :)
xqi8 2003-08-22
  • 打赏
  • 举报
回复
同上
aku0708 2003-08-22
  • 打赏
  • 举报
回复
你定义一个METHOD
加个方法:
<%!public getStr(String str) throws Exception
{
String temp=str;
byte[] temp_p=temp.getBytes("ISO-8859-1");
return new String(temp_p,"GBK");;
}
%>
然后在插入数据库之前将有中文的变量用这个方法将变量转换一下:
String text=null;
if(request.getParameter("text")!=null&&request.getParameter("text")!="")
{
text=getStr(request.getParameter("text"));
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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