在JAVA开发中的中文处理问题及解决办法(2) 张来东 2001-04-02 10:59:19
l++; } } byte []bt2 = new byte[length-l]; for(i =0 ;i〈length;i++){ if(bt[i] == 0){ i++; bt2[j] = bt[i]; }else{ bt2[j] = (byte)(bt[i]|0x80); } j++; } String tt = new String(bt2); return tt; } 上例在实际编程中效果很好,只是存储的中文信息需要经过同样处理,才能被其他系统使用。而且如果中文字串出现英文字符,实际上增加了额外的存储空间。 ■Solaris下Servlet编程的中文问题及解决办法 在使用Java开发Internet上的一个应用系统时,发现在Windows下调试完全正常的Servlet,上传到Solaris 服务器上,运行却出现故障——返回的网页不能显示中文,应为中文的信息全为乱码;用中文信息做关键字,不能正确检索数据库。后来采用加入检查代码等方法探知故障原因如下: 显示乱码主要是因为通过类 HttpServletResponse提供的方法setContentType 无法改变返回给客户的数据的编码方式,正确的编码方式应为GB2312或者GBK,而事实上为缺省的ISO8859-1。无法检索中文信息则是因为,客户提交的中文信息经浏览器编码到达服务器后,Servlet无法将其正确解码。 举例说明显示乱码解决方法 Servlet 一般通常做法如下: public class ZldTestServlet extends HttpServlet { public void doGet (HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{ //在使用 Writer向浏览器返回数据前,设置 content-type header ,在这里设置相应的字符集gb2312 response.setContentType("text/html;charset=gb2312"); PrintWriter out = response.getWriter(); //* // 正式返回数据 out.println("〈html〉〈head〉〈title〉Servlet test〈/title〉〈/head〉" ); out.println("这是一个测试页!"); out.println("〈/body〉〈/html〉"); out.close(); } ... } 解决页面显示乱码问题,需将*处代码换成如下内容: PrintWriter out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(),"UTF-8")); Solaris中文信息检索问题的解决 浏览器利用表单向服务器提交信息时,一般采用x-www-form-urlencoded 的MIME格式对数据进行编码。如果使用get方法,参数名称和参数值经编码后附加在URL后,在Java中称作查询串(query string)。 在Servlet程序中,如果采用ServletRequest的方法getParameter取得参数值,在Solaris环境下,对汉字却不能正确解码。因而无法正确检索数据库。 在Java 1.2的包——java.net中提供了URLEncode和URLDecode类。类URLEncode提供了按x-www-form-urlencoded格式对给定串进行转换的方法。类URLEncode则提供了逆方法。 在编写某网上114查询的Servlet时,采用先取得查询串,再利用类URLDecode解码,再从解码后的串中取得参数,很好地解决了Solrais环境下,中文信息检索的问题。源代码就不在这里给出了,如果需要请和笔者联系。
|首 页||上一页|
与 或 标题 全文 关键字 以上全部
·国家级治脑病新药思维源 ·中藏药治疗脑病新突破 ·治类风湿,强直性脊柱炎 ·养肾·痛风·长寿 ·肝病泌尿脑萎缩新药介绍 ·强直性脊柱炎康复乐园 ·让中医辩证不孕不育 ·国医治股骨头坏死一绝 ·乙肝为何久治不愈? ·二千元垄断批发做老板 ·中医中药专治前列腺 ·治牛皮癣白癜风已成现实 ·专治痛风病的白衣天使 ·不孕不育的杏林奇葩 ·专卖店零售管理系统