软件频道>程序开发>JavaVBVCDelphiC/C++Web开发微软专栏移动数据库程序人生软件工程|开发客
您现在的位置: 天极网 > 开发频道 > 乱码的处理!程序员永远无法避免的话题
全文

乱码的处理!程序员永远无法避免的话题

2007-08-23 10:19作者:冷面阎罗出处:论坛整理责任编辑:半仙

  5、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(),"gb2312"));

  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则提供了逆方法。

软件资讯·软件下载尽在天极软件

相关搜索:
关注此文读者还看过
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众