选择显示字体大小

关于手机post发送中文字符的测试

本文章源地址:http://www.itican.net/lmy0083/?cat=3

最近搞一个wap项目,发现有些手机用post方式提交中文字符的编码有些奇怪,我的环境是gb18030,支持gbk/gb2312。我开发测试opera7.60。开发语言jsp/java

据我所知,java默认传输的字符集是8859_1(单字节字符集),手机上大部分是utf-8,少部分是gb2312;
关于这些字符集请参考http://www.itican.net/lmy0083/?page_id=88

我主要拿”人”这个汉字测试,

gbk/gb2312(hex) c8 cb
utf-8(hex) e4 ba ba
unicode 人

我开发测试以opera7.60 这个浏览器,比较方便,当然,开发都是按这个浏览器支持的开发的,比如我把opera的字符集设为utf-8,所有post的中文字符就会以8859_1 默认的字符集发送(这是单字节字符集,不可能包含中文字符的,中文字符都是双字节,utf-8为3字节)但是奇怪的是,接收必须
string spost = new string(request.getparameter(”input_name”).getbytes(”8859_1″),”utf-8″);
否则不能满足我应用,我不能直接拿
request.getparameter(”input_name”)
来用,当然也不能写成
string spost = new string(request.getparameter(”input_name”).getbytes(”8859_1″),”其他字符集”);

这样开发,一些手机没问题,可以支持,比如nokia的6681,但是实际测试发现,有些手机比如n800,nokia6670,输入中文以这样的方式接收,将会接收到乱码;

于是我拿一些浏览器/模拟器/手机做测试,来看我到底接收到的是那种编码;

测试程序(接收部分,发送部分任意写个input,name为”input_name”):

  1. string spost= request.getparameter("input_name");
  2. if(spost== null spost.length()==0){spost= "0";}
  3. string gb2312_to_utf_8 = new string(spost.getbytes("gb2312"),"utf-8");
  4. string gb2312_to_gbk = new string(spost.getbytes("gb2312"),"gbk");
  5. string gb2312_to_8859_1 = new string(spost.getbytes("gb2312"),"8859_1");
  6. string gbk_to_utf_8 = new string(spost.getbytes("gbk"),"utf-8");
  7. string gbk_to_gb2312 = new string(spost.getbytes("gbk"),"gb2312");
  8. string gbk_to_8859_1 = new string(spost.getbytes("gbk"),"8859_1");
  9. string iso_8859_1_to_utf_8 = new string(spost.getbytes("8859_1"),"utf-8");
  10. string iso_8859_1_to_gb2312 = new string(spost.getbytes("8859_1"),"gb2312");
  11. string iso_8859_1_to_gbk = new string(spost.getbytes("8859_1"),"gbk");
  12. string utf_8_to_8859_1 = new string(spost.getbytes("utf-8"),"8859_1");
  13. string utf_8_to_gb2312 = new string(spost.getbytes("utf-8"),"gb2312");
  14. string utf_8_to_gbk = new string(spost.getbytes("utf-8"),"gbk");
  15. system.out.println("<wap test>*********************************************************");
  16. system.out.println("<wap test>ren");
  17. system.out.println("<wap test>          utf_8  " + "e4baba" + java.net.urlencoder.encode(spost,"utf-8"));
  18. system.out.println("<wap test>          gbk    " + "c8cb  " + java.net.urlencoder.encode(spost,"gbk"));
  19. system.out.println("<wap test>          gb2312 " + "c8cb  " + java.net.urlencoder.encode(spost,"gb2312"));
  20. system.out.println("<wap test>          8859_1 " + "      " + java.net.urlencoder.encode(spost,"8859_1"));
  21. system.out.println("<wap test>gb2312 to utf_8  " + "e4baba" + java.net.urlencoder.encode(gb2312_to_utf_8,"utf-8"));
  22. system.out.println("<wap test>gb2312 to gbk    " + "c8cb  " + java.net.urlencoder.encode(gb2312_to_gbk,"gbk"));
  23. system.out.println("<wap test>gb2312 to 8859_1 " + "c8cb  " + java.net.urlencoder.encode(gb2312_to_8859_1,"8859_1"));
  24. system.out.println("<wap test>gbk    to utf_8  " + "e4baba" + java.net.urlencoder.encode(gbk_to_utf_8,"utf-8"));
  25. system.out.println("<wap test>gbk    to gb2312 " + "c8cb  " + java.net.urlencoder.encode(gbk_to_gb2312,"gb2312"));
  26. system.out.println("<wap test>gbk    to 8859_1 " + "c8cb  " + java.net.urlencoder.encode(gbk_to_8859_1,"8859_1"));
  27. system.out.println("<wap test>8859_1 to utf_8  " + "e4baba" + java.net.urlencoder.encode(iso_8859_1_to_utf_8,"utf-8"));
  28. system.out.println("<wap test>8859_1 to gb2312 " + "c8cb  " + java.net.urlencoder.encode(iso_8859_1_to_gb2312,"gb2312"));
  29. system.out.println("<wap test>8859_1 to gbk    " + "c8cb  " + java.net.urlencoder.encode(iso_8859_1_to_gbk,"gbk"));
  30. system.out.println("<wap test>utf_8  to 8859_1 " + "e4baba" + java.net.urlencoder.encode(utf_8_to_8859_1,"8859_1"));
  31. system.out.println("<wap test>utf_8  to gb2312 " + "c8cb  " + java.net.urlencoder.encode(utf_8_to_gb2312,"gb2312"));
  32. system.out.println("<wap test>utf_8  to gbk    " + "c8cb  " + java.net.urlencoder.encode(utf_8_to_gbk,"gbk"));

测试结果如下:

n800 openwave v6.1

  1. <wap test>*********************************************************
  2. <wap test>ren
  3. <wap test>          utf_8  e4baba%e4%ba%ba
  4. <wap test>          gbk    c8cb  %c8%cb
  5. <wap test>          gb2312 c8cb  %c8%cb
  6. <wap test>          8859_1       %3f
  7. <wap test>gb2312 to utf_8  e4baba%ef%bf%bd%ef%bf%bd
  8. <wap test>gb2312 to gbk    c8cb  %c8%cb
  9. <wap test>gb2312 to 8859_1 c8cb  %c8%cb
  10. <wap test>gbk    to utf_8  e4baba%ef%bf%bd%ef%bf%bd
  11. <wap test>gbk    to gb2312 c8cb  %c8%cb
  12. <wap test>gbk    to 8859_1 c8cb  %c8%cb
  13. <wap test>8859_1 to utf_8  e4baba%3f
  14. <wap test>8859_1 to gb2312 c8cb  %3f
  15. <wap test>8859_1 to gbk    c8cb  %3f
  16. <wap test>utf_8  to 8859_1 e4baba%e4%ba%ba
  17. <wap test>utf_8  to gb2312 c8cb  %e4%ba%3f
  18. <wap test>utf_8  to gbk    c8cb  %e4%ba%3f

[1] [2]  下一页


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons