为什么通过jsp添加中文字符到了sql2000的后台成了乱码????
<%@ page contentType="text/html;charset=gb2312" %>
<<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="zf1" scope="page" class="test.jiancha" >
<jsp:setProperty name="zf1" property="*" />
</jsp:useBean>
<body scroll=no>
<%
String xmc=request.getParameter("xmk");
String sql2="insert into test(xm) values(''"+xmc+"')";
zf1.tj(sql2);}
%>
简单的说明一下,tj()是java bean中的一个添加动作,xmk是本jsp也面的一个form中的text控件,而且String xmc=new String(request.getParameter("xmk").getBytes("8859_1"),"gb2312"); 这样写通不过,我把所有的csdn的资料都看遍了,都没有,所以才提出来,望指点为感。
问题点数:50、回复次数:16Top
1 楼pgztdk(Forsaken)回复于 2004-12-02 19:53:37 得分 1
new String((request.getParameter("xmk")).getBytes("GBK"),"iso8859-1")
如果不行就把GBK 和iso8859-1试试看,不行别K我...Top
2 楼wwwlove(魔幻旋风)回复于 2004-12-02 20:00:45 得分 1
byte a[]=xmc.getBytes(ISO-8859-1);
xmc=new string(a);Top
3 楼debug158(过客)回复于 2004-12-02 21:02:46 得分 1
up!Top
4 楼zhufei_taikang()回复于 2004-12-03 10:10:20 得分 0
wwwlove(魔幻旋风) ( )兄弟,按照你的提示出现这么的错误:
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 12 in the jsp file: /jh_tx.jsp
Generated servlet error:
xmc cannot be resolved
An error occurred at line: 12 in the jsp file: /jh_tx.jsp
Generated servlet error:
ISO cannot be resolved
Top
5 楼zhufei_taikang()回复于 2004-12-03 10:11:06 得分 0
pgztdk(Forsaken) 兄弟,你的方法也是错的,谢谢了Top
6 楼tiannet(http://tiannet.yculblog.com)回复于 2004-12-03 10:21:06 得分 1
String xmc = new String(request.getParameter("xmk").getBytes("ISO8859-1"),"gb2312")Top
7 楼drugon(更高,更远,更强)回复于 2004-12-03 11:29:21 得分 1
自己先把那些字符转换一下。Top
8 楼JIEK_ONE(weiwei)回复于 2004-12-03 11:49:37 得分 1
楼主看看这个行吗?
strSQL =
"insert into EMPLOYEE (name,sex,age) values (?,?,?)";
prestmt = conn.prepareStatement(strSQL);
prestmt.setBytes(1,name.getBytes("GBK"));
prestmt.setBytes(2,sex.getBytes("GBK"));
prestmt.setBytes(3,age.getBytes("GBK"));
prestmt.executeUpdate();Top
9 楼vcvj([Reside]in Fuzhou, [Gonna]be Oversea, [Depositing)回复于 2004-12-03 11:54:39 得分 1
you must download JDBC of MSSQLServer again, note: the size of jdbc, please sure it's the best new.Top
10 楼packer(宇)回复于 2004-12-03 11:56:26 得分 1
cuoleTop
11 楼SUNDATA(古灯)回复于 2004-12-03 12:04:03 得分 2
// 解决中文显示问题
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 "空";
}
一定可以的.Top
12 楼yrsheng(以德服人)回复于 2004-12-03 13:25:24 得分 1
调用request.getParameter("fieldName")获取输入的字符串之前,用这句设置编码:request.setCharecterEncoding("GBK");这样得到的才是正确的中文。
或者将request.getParameter("fieldName")获取的字符串进行中文编码转换:
String content = request.getParameter("fieldName");
content = new String(content.getBytes("ISO8859-1"),"GBK");
注意二都不能一起使用.Top
13 楼MYLiao(醉书生)回复于 2004-12-03 13:48:26 得分 37
你试试下面的:
<%@ page contentType="text/html;charset=gb2312" %>
<<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="zf1" scope="page" class="test.jiancha" >
<jsp:setProperty name="zf1" property="*" />
</jsp:useBean>
<body scroll=no>
<%!
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;
}
%>
<%
String xmc=getStr(request.getParameter("xmk"));
String sql2="insert into test(xm) values('"+xmc+"')";
zf1.tj(sql2);
%>
Top
14 楼xinlcao(老猫在线)回复于 2004-12-03 13:48:59 得分 1
现在使用这个转换:
public static String convertToChinese(String strInput) {
String str = "";
try {
str = new String(strInput.getBytes("iso-8859-1"), "gb2312");
}
catch (Exception e) {
str = strInput;
}
finally {
return str;
}
}
原来一直用这个转换:
public String native2unicode(String s)
{
if(s == null || s.length() == 0)
return null;
byte abyte0[] = new byte[s.length()];
for(int i = 0; i < s.length(); i++)
abyte0[i] = (byte)s.charAt(i);
return new String(abyte0);
}
你试试。Top
15 楼gyb0817(一诺)回复于 2004-12-03 14:56:49 得分 1
中文显示问题,帮你顶!Top
16 楼zhufei_taikang()回复于 2004-12-03 15:09:18 得分 0
谢谢大家的帮助,csdn确实是我们程序员的家,我体会到了,下次我也会热情的帮助大家的,希望发贴的和回复的都认真对待,这样的贴子才是程序员的导航灯。好了,MYLiao(夕阳武士) 的答案完全正确,大家可以使用。本来分全部要给他的,但大家既然进来了,就得点小分了,谢谢大家!Top




