惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
Jina AI
Jina AI
雷峰网
雷峰网
博客园_首页
WordPress大学
WordPress大学
博客园 - 司徒正美
爱范儿
爱范儿
博客园 - 聂微东
IT之家
IT之家
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Tailwind CSS Blog
博客园 - Franky
V
V2EX
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志

博客园 - 蔡清华

数据库中查询的各种连接(左连接,右连接,全连接,内连接,交叉连接,自连接) Android RenderScript 的使用基础篇 Android应用启动后自动创建桌面快捷方式 Android API教程:人脸检测(Face Detect) Android应用中通过AIDL机制实现进程间的通讯实例 Android开发:如何实现TCP和UDP传输 用户授权认证过程 Android应用自动更新功能的代码实现 Android蓝牙开发浅析 (转)android中 检查网络连接状态的变化,无网络时跳转到设置界面 Android开发之OpenGL+ES教程 android 示例源码 android 图片处理 Android应用如何实现换主题功能 android 开发环境搭建 Android 之 内存管理 Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面 android 网络拨号流程 Android_launcher的源码详细分析
网络通信的中文乱码问题
蔡清华 · 2012-03-30 · via 博客园 - 蔡清华

简介:在实际开发过程中,我们经常遇到中文显示乱码问题,为了解决这个问题,我们必须追根问底,我们来认识一下目前有几种字符编码方式:

1)ASCII编码,ISO-8859-1 它是单字节编码,是目前计算机中应用最广泛的字符编码方式;

2)Unicode编码,一个字符用两个字节表示,比如UTF8就是采用Unicode编码方式

3)GB2312 字集是简体字集,BIG5 字集是台湾繁体字集,GBK 字集是简繁字集:包括GB字集、BIG5字集和一些符号;

4)GB1830 是国家制定的一个强制性大字集标准。

目前Linux 系统默认使用的是ISO-8859-1 编码,Win32 系统默认使用的是GB2312, 服务器与客户端通信,一次通讯会导致两次字符编码

所以如果遇到中文显示问题,一般是服务端与客户端编码不一致导致的。

如果服务端是采用UTF8编码方式,客户端要处理中文的话,就可以采用如下代码了:

   InputStream is = conn.getInputStream();

   BufferedInputStream bis = new BufferedInputStream(is);

   byte bytearray[] =  new byte[1024];

   int current = -1;

   int i= 0;

   while((current == bis.read()) != -1) 

  {

       bytearray[i++] = (byte)current;

   }

   resultData = new String(bytearray,"GB2312") ;

   很多时候,服务端在传输过程中采用ISO-8859-1字符集,这样就是直接采用ASCII编码方式,客户端需要将数据反转才能使用,可参考如下代码:

   public static String FormatStr(String str)

   {

        if(str == null || str.length() == 0)

        {

              return ""; 

        } 

        try{

             return new String(str.getBytes("ISO-8859-1"),"gbk")); 

            }catch(UnsupportedEncodingException ex)

            {

                return str; 

             } 

    }