科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道乱码的处理!程序员永远无法避免的话题

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样...

作者:冷面阎罗 来源:天极论坛整理 2007年10月13日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共5页)

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

    • 评论
    • 分享微博
    • 分享邮件
    閭欢璁㈤槄

    濡傛灉鎮ㄩ潪甯歌揩鍒囩殑鎯充簡瑙T棰嗗煙鏈€鏂颁骇鍝佷笌鎶€鏈俊鎭紝閭d箞璁㈤槄鑷抽《缃戞妧鏈偖浠跺皢鏄偍鐨勬渶浣抽€斿緞涔嬩竴銆�

    重磅专题
    往期文章
    最新文章