google翻译后续
sshong 发表于2008年4月3日 17:00:00 更新于2008年4月7日 22:52:00
  本来以为老早就搞定的google翻译,却因为中文问题而一时得不到解决。这两天对文字编码又进行了回顾,查阅了很多资料,才稍微有些明了,或许下面的文字中仍然有错。
  1.post或者get传参中多字节参数编码
  如果某个http页面发送一个请求到服务器,如果其传递的参数中有中文或者多字节,浏览器本身根据该页面的编码方式声明如(<meta http-equiv="content-type" content="text/html;charset=gb2312">),不管是post还是get,将多字节文字进行编码,再进行传递到服务器。
  而flash中的urlrequest则要代替一个页面的作用来将中文或者多字节文字按照某种编码方式进行编码,如下所示,对于一个字串 "text=我爱" ,根据codepage的不同,被转换为了不同编码。
usecodepage=false//UTF-8
text=%E4%B8%AD%E6%96%87
usecodepage=true//GBK
text=%D6%D0%CE%C4
  同理,如果是一个html网页中,如果有一个form,form里有一个名字叫text的input,输入中文然后传递text参数时,会根据charset的不同(utf-8,gbk)来编码。
  2.Unicode
  帮助文档对usercodepage的解释是“当该属性设置为 false 时,Flash Player 使用 Unicode 解释外部文本文件。 (保存这些文件时,必须使用 Unicode 对其进行编码。) 当该属性设置为 true 时,Flash Player 使用运行播放器的操作系统的传统代码页来解释外部文本文件。 ”
  所谓codepage是各国的文字编码和Unicode之间的映射表。
  而Unicode为"Universal Multiple-Octet Coded Character Set",简称UCS。现在常用的是UCS-2,就是将世界上所有的文字用2个字节统一进行编码。
  3.jsp中的pageencoding和contenttype以及html中的charset
   pageEncoding设置JSP源文件和响应正文中的字符集编码.
   contentType设置JSP源文件的字符集编码和响应正文的MIME类型.
   可见,pageEncoding和contentType都可以设置JSP源文件和响应正文中的字符集编码.但也有区别:
   设置JSP源文件字符集时,优先级为   pageEncoding   >   contentType.都没有设置,默认ISO-8859-1.
   设置响应输出的字符集时,优先级为   contentType   >   pageEncoding.都没有设置,默认ISO-8859-1;都设置了,以contentType为准.
    a. contentType: <%@ page contentType="text/html; charset=UTF-8"%>
    b. pageEncoding:<%@ page pageEncoding="UTF-8"%>
    c. html页面charset:<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
  sshong4.7日注关于上述解析并不完全正确,可以参考日志测验jsp的几个字符相关设置
  4.服务器端解析多字节参数
  jsp默认用request.setCharacterEncoding(),或者SetContentType来改变参数的编码方式(ms只对post传递的参数有效),如果采用默认的iso8859-1编码,这样获取的多字节参数会乱码,所以首先要更改获取编码方式,这样就能获取正确的多字节参数。
  另外一种方法就是,将传递过来的参数首先转换为字节然后根据新编码形成新的字串,如  new String(request.getParameter(paramname).getBytes("iso8859-1"), "GBK");
  5.proxy.jsp流程
   如下如所示,
   首先根据用户输入的url以及传入的其他参数(可能多字节),得到一个url,以及一串参数(形式如paramA=A¶mB=B...),最后将这些参数,传递到该url,获取输出到用户。其核心是这一串参数的转入以及转出,如何保证不乱码读入以及不乱码输出。
标签:无分类:As3&Flex阅读:3432
评论
暂无评论
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅