html部分代码:
<TABLE cellSpacing=1 cellPadding=0 width=145 border=0>
<TBODY>
<TR>
<TD align="middle" width="70"><a href="/Reservation system/show.do?username=皮蛋瘦肉粥"><img
src="images/buy_cn.gif" border="0"
longdesc="shoppingCart.html"></a></TD>
<TD align=middle width=70><A href="/Reservation system/DetailServlet?fName=皮蛋瘦肉粥" ><IMG
src="images/detail_cn.gif" border=0></A></TD>
</TR>
</TBODY>
</TABLE>
servlet部分代码:
public String execute(HttpServletRequest request,
HttpServletResponse reponse, Connection conn) {
HttpSession session = request.getSession();
ShopCart st = new ShopCart();
ResultSet rs = null;
PreparedStatement ps = null;
try {
String food = new String (request.getParameter("username").getBytes("GBK"),"gb2312");
System.out.println(food);
打印出来的food一值是乱码,求助,在线等。。。。。。我要崩溃了
------解决方案--------------------
设置页面字符编码为GBK,同时设置eclipse的工作空间字符集为GBK 应该就可以了
------解决方案--------------------
我的myeclipse自己设置默认是utf-8的,然后通过new String(method.getBytes("iso8859-1"),"utf-8")就可以把中文输出
你试试把你的HTML的编码跟myeclipse一致,然后通过new String(method.getBytes("iso8859-1"),"gbk")试试!
------解决方案--------------------
GET:没有方法可以设置它,因为参数在url中。所以使用request.getParameter()获取到的数据一定是错误的使用了iso-8859-1解码的。
可以再使用iso-8859-1把字符串转回到byte[],再重新使用正确的编码来解码即可。
String s = request.getParameter("s");//使用iso-8859-1错误的解码了
byte[] bytes = s.getBytes("iso-8859-1");//退回错误的解码,让字符串通过iso-8859-1返回到字节数据,即还原字节数据
s = new String(bytes, "utf-8");//重新使用正确的utf-8来解码。
------解决方案--------------------
tomcat\7.0\conf\server.xml 设置端口处加上 URIEncoding="UTF-8"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
------解决方案--------------------
顶
------解决方案--------------------
String food = new String (request.getParameter("username").getBytes("ISO8859-1"),"utf-8");
System.out.println(food);
------解决方案--------------------
正解,顶
测试结果如下:
页面代码如下:
<a href="TestServlet?name=皮蛋瘦肉粥">hhhhh</a>