关于WAP网页查询中文的问题(还是中文编码的问题)!
我做了一个数据库中中文查询的WAP网页,我是用WINWAP模拟器的,编码方式是UTF-8,我在input中
输入中文,然后传递给另外一个JSP中查询!
代码片断如下:
index.jsp
……
<p>
<input title="搜索" name="searchVar" type="text" value=""
maxlength="8" size="8"/><br/>
<anchor title="Go There">搜索!<go href="searchResult.jsp#s">
<postfield name="itemType" value="搜索结果:" />
<postfield name="searchVar" value="$searchVar"/>
</go></anchor><br/>
</p>
……
searchResult.jsp:
……
DBConnection dbc1 = new DBConnection();
String SQL_Query_temp = "";
SQL_Query_temp = "get ItemInfo(name,id,itemtype_en) from /wap_DB/ItemInfo/
where (name like '%" +searchVar+ "%') or (itemdesc like '%" +searchVar+ "%') order by
releasedate desc";
byte[] bytes1 = SQL_Query_temp.getBytes("ISO8859-1");
String SQL_Query=new String(bytes1,"GB2312");
try{
dbc1.openConnection();
ResultSet kr1 = dbc1.executeQuery(SQL_Query);
……
我来对上面的代码做个解释:首先,我对传递过来的中文(这里的SQL语句大家看了有点陌生,是我
们引擎上用的,和SQL一样的。)放在SQL中,然后把它转码,转成GB2312的,这样,就好查询了,
因为数据库中的中文编码是GB2312的。
我在WINWAP中测试,这样是可以查询的,没有问题的,TOMCAT的DEBUG中的SQL语句能显示我在进行
中文查询工作。
可是,我把上述程序在手机中跑就不行了,手机中能接受传递进来的中文参数,如果我在searchRes
ult.jsp中<%=searchVar%>也能正常显示我传递进来的中文的,可是,我这么一转成GB2312就不行了
,我在TOMCAT中的DEBUG看到的中文是乱码!如果我不转,直接放进去查询,还是不行!
我觉得,问题出在byte[] bytes1 = SQL_Query_temp.getBytes("ISO8859-1");在WINWAP中,INPUT
中的中文编码是默认的ISO8859-1,可是,在手机的浏览器中,就不是了,是什么呢?我是用nokia
7250测试的,那应该是什么编码呢?
大家有经验的朋友看看,看看我分析的对不对,然后帮我出出主意,谢谢了!