表单数据返回中文乱码问题???

goodle 2003-08-23 10:14:51
各位高手,我建立一个表单,但在同一个页面返回所提取“名”的“值”的时候,如果是中文的话,返回的是乱码,原代码如下:
<%@page contentType="text/html;charset=GB2312"language="java"import="java.util.Enumeration" %>
<html>
<head>
<title>Value Of Name</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="">
<!--定义表单数据-->
<input type="hidden" name="隐藏域" value="值">
<input type="text" name="文本域">
<input type="submit" name="Submit" value="提交按钮">
</form>
<p>
<%
//提取“名”集合
Enumeration names = request.getParameterNames();
String name,value;
for(Enumeration e=names;e.hasMoreElements();)
{
name = e.nextElement().toString();
value = request.getParameter(name);
out.println("<p>");
out.println("'"+name+"'"+"的值是"+"'"+value+"'");
out.println("</p>");
}
%>
</p>
</body>
</html>
...全文
74 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leomonkey 2003-08-27
  • 打赏
  • 举报
回复


不知道你是怎么来测试的
调式你的程序是完全正确的
到是加了某些东西就是错误大大的
害的搞古了半天


我的jsp配置是java1.3.1(用的还是JB7里自带的)+weblogic6.1

squallzeng 2003-08-27
  • 打赏
  • 举报
回复
是不是你的运用写的不对呢?还有就是你的值应该先转换成String后再运用funToChinaese()才可以的啦。你再试试吧。应该没有问题的,我的都是这样实现的哦。。。。。。。
wynton 2003-08-26
  • 打赏
  • 举报
回复
to:squallzeng(小呆呆)
不加还好,加上的结果如下:
'???'的值是'null'

'???'的值是'null'

'Submit'的值是'????'
squallzeng 2003-08-26
  • 打赏
  • 举报
回复
public static String funToChinese(String strvalue) {
try
{
if(strvalue==null)
{
return null;
}
else
{
strvalue = new String(strvalue.getBytes("ISO8859_1"),"GB2312");
return strvalue;
}
}
catch(Exception e)
{
return null;
}
}
在你的程序里加入这段代码,然后把你要引用的值通过funToChinaese()来转换试试看吧。应该没有问题的啦。
goodle 2003-08-25
  • 打赏
  • 举报
回复
请问具体加在何处?
naxin 2003-08-25
  • 打赏
  • 举报
回复
在action.jsp中
<%
request.setCharacterEncoding("GBK");
%>
goodle 2003-08-25
  • 打赏
  • 举报
回复
str非空也产生错误,点解?
wynton 2003-08-25
  • 打赏
  • 举报
回复
to:seaman0916(沙漠孤鹰)
结果为什么是这样的啊?

'隐藏域'的值是'null'

'文本域'的值是'null'

'Submit'的值是'提交按钮'
naxin 2003-08-25
  • 打赏
  • 举报
回复
加在接收变量的语句前就行了.一个jsp文件一句就行.

注意在jdk 1.3之后才好用
goodle 2003-08-24
  • 打赏
  • 举报
回复
首先谢谢各位!!! 我的jsp配置是java1.41+tomcat4.1

to Wnyu(西门吹水) & Gulfing(心如止水)
我已经试过用你们的方法,不过在点击按钮后返回的页面是error report ,root cause是java.lang.NullPointerException, 请问如何解决?

to seaman0916(沙漠孤鹰)
我也用过你的方法,我把class文件跟页面文件放在同一个文件夹,我也试过把class文件打包成jar文件,然后在环境变量classpath添加bean.jar所在的路径,但都是同一个错误package beans does not exist,请问如何是好?

再次麻烦各位!

solotarn 2003-08-24
  • 打赏
  • 举报
回复
看一下这篇文章:http://www.clocksix.com/J2eeChinese
Wnyu 2003-08-24
  • 打赏
  • 举报
回复
str是否为空值?
aku0708 2003-08-24
  • 打赏
  • 举报
回复
你定义一个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"));
}
Wnyu 2003-08-23
  • 打赏
  • 举报
回复
String s = new String(str.getBytes("ISO-8859-1"),"gb2312");
1010530 2003-08-23
  • 打赏
  • 举报
回复
通过javaBean得到的网页上中文信息转换一下编码就可以了
seaman0916 2003-08-23
  • 打赏
  • 举报
回复
通常把经常用的功能写成Javabean 是很方便的! 强烈推荐
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,以后在显示表单传递的中文数据时先转换一下!

调用方式:

<%@page contentType="text/html;charset=GB2312"language="java"import="java.util.Enumeration" %>
<jsp:useBean id="chage" scope="session" class="beans.ISOtoGB2312"/> //引用javabean

<html>
<head>
<title>Value Of Name</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="">
<!--定义表单数据-->
<input type="hidden" name="隐藏域" value="值">
<input type="text" name="文本域">
<input type="submit" name="Submit" value="提交按钮">
</form>
<p>
<%
//提取“名”集合
Enumeration names = request.getParameterNames();
String name,value;
for(Enumeration e=names;e.hasMoreElements();)
{
name = chage.getConvert(e.nextElement().toString());//调用javaBean的getConvert方法
value = chage.getConvert(request.getParameter(name));
out.println("<p>");
out.println("'"+name+"'"+"的值是"+"'"+value+"'");
out.println("</p>");
}
%>
</p>
</body>
</html>


试试看!以后都可以使用这个JavaBean !
Gulfing 2003-08-23
  • 打赏
  • 举报
回复

value = request.getParameter(name).getBytes("ISO-8859-1"),"GBK");

81,090

社区成员

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

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