keyword1=request.getParameter(“keyword1”);
keyword1=getStr(keyword1);
这样就可以解决问题了,代码如下:
<%@ page contentType=“text/html;charset=gb2312”%>
<%!
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”;
}
%>
<%--cndes测试--%>
<% String keyword=“创联
网络技术中心欢迎您的到来”;
String key
word1=request.getParameter(“keyword1”);
keyword1=getStr(keyword1);
out.print(keyword);
out.print(keyword1);
%>
2. JDBC Driver的字符转换
目前大多数JDBC Driver采用本地编码格式来传输
中文字符,例如中文字符“0x4175”会被转成“0x41”和“0x75”进行传输。因此需要对JDBC Driver返回的字符以及要发给JDBC Driver的字符进行转换。当用JDBC Driver向数据库中插入数据时,需要先将Unicode转成Native code; 当 JDBC Driver从数据库中
查询数据时,则需要将Native code转换成Unicode。下面给出了这两种转换的实现:
String native2Unicode(String s) {
if (s == null || s.length() == 0) {
return null;
}
byte[] buffer = new byte[s.length()];
for (int i = 0; i s.length(); i++) { if (s.charAt(i)>= 0x100) {
c = s.charAt(i);
byte []buf = (“”+c).getBytes();
buffer[j++] = (char)buf[0];
buffer[j++] = (char)buf[1];
}
else {buffer[j++] = s.charAt(i);}
}
return new String(buffer, 0, j);
}
要注意的是,有些JDBC Driver如果通过JDBC Driver Manager设置了正确的字符集属性,以上方法就不需要了。具体情况可参考相关JDBC的资料。
相关资料
1.相关标准组织及标准
国际标准组织Unicode(icode.org)提供了以下转换表:
GB和Unicode转换表:ftp://ftp.unicode.org/Public/MAPPINGS/EASTASIA/GB;
BIG5和Unicode转换表: ftp://ftp.unicode.org/Public/MAPPINGS/EASTASIA/OTHER
JIS和Unicode转换表: ftp://ftp.unicode.org/Public/MAPPINGS/EASTASIA/JIS
KSC和Unicode转换表: ftp://ftp.unicode.org/Public/MAPPINGS/EASTASIA/KSC
由于GBK不是国家标准,所以Unicode并没有提供GBK到Unicode的转换表,而只是采用了Microsoft的CodePage的一个版本:ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP{936,950}.TXT。
2.相关软件下载
JDK 1.3 java.sun
Resin 2.0.1 caochu
Apache 1.3.20 apache.org
MySQL 3.23 my
sql.org
MySQL 3.23
mysql.org
DBTools 1.0.12 dbtools.dr