♣
在提交了一次add后,选择列表中的中文都变成了"????????",为什么?
问题如题
carts.html:
<html>
<head>
<title>请选择cd</title>
</head>
<body>
<form action = "carts.jsp" method="post">
<select name="item">
<option selected>阿甘正传</option>
<option>狮子王</option>
<option>云中漫步</option>
<option>秋日传奇</option>
</select>
<p>
<input type="submit" name="submit" value="add"><br>
<input type="submit" name="submit" value="remove"><br>
</form>
</body>
</html>
carts.jsp:
<%@ page contenttype="text/html;charset=gbk"%>
<%
request.setcharacterencoding("gbk");
%>
<html>
<jsp:usebean id="cart" scope="session" class="sessions.dummycart" />
<jsp:setproperty name="cart" property="item" value="<%=request.getparameter(\"item\")%>"/>
<jsp:setproperty name="cart" property="submit" value="<%=request.getparameter(\"submit\")%>"/>
<%
cart.processrequest();
%>
<font size = 5 color="#cc0000">
<br> 您当前选择了如下cd:
<ol>
<%
string[] items = cart.getitems();
for (int i=0; i<items.length; i++) {
%>
<li> <%= items[i] %>
<%
}
%>
</ol>
</font>
<hr>
<%@ include file ="carts.html" %>
</html>
dummycart.java:
package sessions;
import java.util.vector;
import java.util.enumeration;
public class dummycart {
vector v = new vector();
string submit = null;
string item = null;
private void additem(string name) {
v.addelement(name);
}
private void removeitem(string name) {
v.removeelement(name);
}
public void setitem(string name) {
item = name;
}
public void setsubmit(string s) {
submit = s;
}
public string[] getitems() {
string[] s = new string[v.size()];
v.copyinto(s);
return s;
}
public void processrequest() {
if (submit.equals("add"))
additem(item);
else if (submit.equals("remove"))
removeitem(item);
// reset at the end of the request
reset();
}
// reset
private void reset() {
submit = null;
item = null;
}
}
· 网友精彩回答:
include 一个htm文件在tomcat5很容易出乱码的。
这篇文章对你有用。
http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageid=752
jsp中文乱码小议
-------郭鹏
jsp是一个很热门的话题,但让大多数人都头痛的是jsp页面中的乱码问题,笔者身有体会;曾为了解决中文乱码问题郁闷了好几天,试了很多方法都不行。最后在jsp专业人士的帮助下,终于解决。之后笔者曾对此做了一些小的研究。
首先我们先了解一下问题的原因。一般情况在在每个jsp页的头部都有这样一条语句:
<% page contenttype="text/html; charset=gb2312" %>这条语句决定了此页面使用gb2312编码形式,而在数据库中一般用的是iso-8859-1字符集存储数据. 而java程序在处理字符时默认采用统一的iso-8859-1字符集(体现java国际化思想),所以在添加数据时,默认的字符集编码是iso-8859-1,而页面采用的是gb2312,所以就出现乱码问题。为解决此问题应在存储的时候把gb2312换转成iso-8859-1。有此时候在读出时也会出现乱码,那么只需反过来就可以了,把iso-8859-1转换成gb2312。
具体实例归纳了以下几点,也许会对大家有一些帮助。
1、 在建立jsp页面时应该注意在jsp页面的头部加入一下代码
<% page contenttype="text/html; charset=gb2312" %>
此方法是解决jsp页面显示时的乱码。
2、 有时还需在html代码中的<head></head>中加入这句
<meta http-equiv="content-type" content="text/html; charset=gb2312">
3、 在bean中用的是iso-8859-1编码,在jsp中一般用gb2312编码,处理此类乱码问题如下
string str=new string(strname.getbytes(“iso-8859-1”),”gb2312”);
具体用到此方法的地方为,当提交表单到bean表单提交后,数据库中存入的数据确变成了????,因此在调用bean之前应对编码进行转换,方法:string str=new string(request.getparameter().getbytes(“iso-8859-1”),”gb2312”);
这样,存入数据库的数据库的数据就可见了。
4、 对于页面间的参数传递也可以用这个方法来处理乱码问题:
public string getstr(string str)
{
try
{
string temp_p=str;
byte[] temp_t=temp_p.getbytes("iso8859-1");
string temp=new string(temp_t);
return temp;
}
catch(exception e)
{}
return "null";
}
5、 在表单定义时加上这个属性有时也可以解决表单提交过程中出现的乱码
<form enctype="multipart/form-data"></form>
6、 提交英文字符能正确显示,如果提交中文时就会出现乱码。原因:浏览器默认使用utf-8编码方式来发送请求,而utf-8和gb2312编码方式表示字符时不一样,这样就出现了不能识别字符。解决办法:通过request.setcharacterencoding("gb2312")对请求进行统一编码,就实现了中文的正常显示。
- 更多问题:
- · 100分求解UDP控件的奇怪问题,解决就给分。
- · 关于PB中英文翻译的文章(2天类结帖)(前天的帖子刚结帖了)
- · VC+ACCESS数据库程序的问题。
- · 请问到哪里可以下载 程序员修炼三部曲 非常感谢
- · 在线等,请问后缀是WDL的文件该用什么工具打开?
- · 网络编程中的connect函数怎么控制它的connect时间
- · 自己下了个CPU降温工具CPUCOOL,但是不大会用,来请教一下.
- · 100分求一软件:无届浏览器
- · 怎样操作一组单选框中某一个框
- · 怎样通过Internet远程访问一个Access数据库!
- · 怎样通过Internet远程访问一个Access数据库!
- · asp.net 如何连接access数据库
- · 多文档的问题?
- · 线程池中讲的异步调用函数该怎么使用??谢谢
- · 请大家帮忙看看我的程序有什么问题??
- · “组帧”该怎么翻译??
- · 动态服务大全
- · 水印制作技术 | 水印
- · SMTP邮件服务
- · 算法与应用
- · 堆栈技术文档 | 堆栈
- · framework配置
- · erp管理
- · php soap
- · soap消息
- · soap header
- · jdk1.4
- · jdk的配置
- · 内存芯片
- · 电源芯片
- · 甲骨文总裁
- · lotus notes 开发
- · 数据库管理系统
- · 数据库课程设计报告书
- · 网站数据库
- · Oracle数据库实例的内存和进程结构
- · 数据库服务器
- · 破解Access数据库密码
- · 巧妙应用powerpoint课件保存格式
- · powerpoint教学
- · 火狐浏览器2.0

