1.要解决中文乱码问题。首先得了解什么是字符编码

计算机要处理各种字符,就须要将字符和二进制内码相应起来,这样的相应关系就是字符编码。

要制定字符编码首先要确定字符集,并将

字符集内的字符排序。然后和二进制数字相应起来。依据字符集内字符的多少。确定几个字节来编码。

2.经常使用的字符编码

ASCII 编码是眼下计算机中经常使用的最广泛地 字符集及其编码。

ISO-8859-1能够表示的是西欧语言。看起来非常单一,可是因为是单字节编码,与计算机最基础的表示单位一致,所以在非常多时候。仍旧使用ISO-8859-1编码来表示,并且在非常多协议上默认使用这样的编码。

Unicode编码(统一码),通常所说的UTF-8就是Unicode编码的实现方式。

GB2312字集是简体字集。BIG5字集是台湾繁体字集;GBK字集是简繁字集;GB18030
是国家制定的一个强制性大字集标准;Linux系统默认的使用的是ISO-8859-1编码,。如今的PC平台必须支持GB18030。对嵌入式产品暂不作要求。所以手机、MP3一般仅仅支持GB2312。

3.网络传输产生中文乱码原因

网络通信中,产生乱码的原因主要是通信过程中使用了不同的编码方式:server中的编码方式,传输过程中的编码方式,传输到达终端设备的编码方式。

因此在传输过程中就须要至少两次编码转换:首先从server编码转为网络编码,再从网络编码转为终端设备编码。在转换的过程中出现不论什么情况都可能出现编码混乱。

4.处理中文乱码问题经常使用两种方式解决

(1)因为大部分终端设备都支持Unicode字符集。所以在连接网页时。我们希望网页数据在网络传输时使用UTF-8方式传输,我们就能够将UTF-8转化为Unicode字符集。以下我们将通信过程中得到的流转化为字节。然后再将字节按GB2312 的方式进行转换得到字符串。

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;

i++;

}

resultData = new String (bytearray,"GB2312");//网络中以字节想形式默觉得UTF-8进行编码,以GB2312显示到终端

通过上面的转换,“resultData”字符串便能够显示中文效果了。

(2)还有一种方式是书记在传递的过程中使用ISO-8859-1字符集,这样就是直接使用了ASCII编码方式,当然在传递到终端设备时。须要将其数据反转才可以正常的显示。

以下我们将一个字符串按ISO-8859-1字符集进行转换为gbk,代码例如以下:

public static String formatStr(String str){

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

return "";

}

try{

return new String (str.getBytes("ISO-8859-1"),"gbk"); //先在网络中以ISO-8859-1进行编码。再以gbk输出到终端

}

}

总结:归根结底,解决中文乱码仅仅须要两个步骤:

·使用getBytes("编码方式");来对汉字进行重编码。得到它的字节数组。

·再使用new String (Bytes[],"解码");解码相应的字节数组。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

android 中国通信乱码问题的更多相关文章

  1. 【Arduino】开发入门【十】Arduino蓝牙模块与Android实现通信

    [Arduino]开发入门[十]蓝牙模块 首先show一下新入手的蓝牙模块 蓝牙参数特点 1.蓝牙核心模块使用HC-06从模块,引出接口包括VCC,GND,TXD,RXD,预留LED状态输出脚,单片机 ...

  2. Android——进程通信/ AIDL/Message相关知识总结贴

    Android多进程通信 http://www.apkbus.com/android-83462-1-1.html Android 跨进程通信(一) http://www.apkbus.com/and ...

  3. Android Socket通信详解

    一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客 ...

  4. android IPC通信(上)-sharedUserId&&Messenger

    看了一本书,上面有一章解说了IPC(Inter-Process Communication,进程间通信)通信.决定结合曾经的一篇博客android 两个应用之间的通信与调用和自己的理解来好好整理总结一 ...

  5. Android近场通信---NFC基础转)

    Android近场通信---NFC基础(一)(转) 本文介绍在Android系通过你所能执行的基本任务。它解释了如何用NDEF消息格式来发送和接收NFC数据,并且介绍了支持这些功能的Android框架 ...

  6. Android Socket 通信

    Android socket 通信 安卓编写Socket客户端,实现连接Socket服务端通信. 创建Socket连接并获取服务端数据 先创建几个全局变量吧 private BufferedWrite ...

  7. android http通信之HttpURLConnection post乱码问题

    楼主前段时间做android项目,用到http通信,于是楼主本着练手的态度,自己写httpUrlConnection通信过程,然后在测试的时候,发现使用post请求一直乱码,这时候楼主开始看发送的数据 ...

  8. Android访问服务器(TOMCAT)乱码引发的问题

    1.浏览器往服务器发送的请求主要可分为2种:get.post:delete.head等不赘述. GET方式: 从浏览器上直接敲地址,最大特点就是参数直接跟在地址后面. POST方式:表单提交等. 2. ...

  9. (转)android 蓝牙通信编程

    转自:http://blog.csdn.net/pwei007/article/details/6015907 Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输. 本文档描述了怎样 ...

随机推荐

  1. JNI生成C的头文件

    最近再给android封装一个C语言的so,以供安卓程序下使用. 再次记录一下,防止以后忘记了. 首先下载安装JDK,下载地址:http://www.oracle.com/technetwork/ja ...

  2. java--ThreadPool线程池简单用法

    package com.threadPool; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent. ...

  3. Android开发:TextView添加超链接的简便方法

    TextView中加入超链接的方式很多,但下面的方式应该的最简便合理的 strings.xml中定义字串 <string name="blog"><a href= ...

  4. DOS批处理延时技术

    DOS批处理延时技术 举个例子,我们要延时5秒打开gdh.txt这个文件,可以用以下几个方法 方法一:ping  缺点:时间精度为1秒,不够精确   www.2cto.com   @echo off  ...

  5. Codeforces 196 C. Paint Tree

    分治.选最左上的点分给根.剩下的极角排序后递归 C. Paint Tree time limit per test 2 seconds memory limit per test 256 megaby ...

  6. 浅谈Storm流式处理框架(转)

    Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据.但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂. 有需求也就有创造,在Hadoop基本奠定了大数据霸 ...

  7. Servlet(二)GenericServlet

    以GenericServlet创建Servlet 1.在FirstServlet同文件夹下建立GServlet.java package com.hunhun; import javax.servle ...

  8. Cocos2d-x v3.0正式版尝鲜体验【3】 Label文本标签

    Cocos2d-x在新版本号中增加了新的Label API.和以往不同的是,2.x的版本号是通过三个不同的类来创建不同的文本标签,而如今是模仿着精灵的创建方式.一个类创建不同形式的文本,只是核心内容还 ...

  9. 斯坦福ML公开课笔记14——主成分分析

    上一篇笔记中,介绍了因子分析模型,因子分析模型使用d维子空间的隐含变量z来拟合训练数据,所以实际上因子分析模型是一种数据降维的方法,它基于一个概率模型,使用EM算法来预计參数. 本篇主要介绍PCA(P ...

  10. 基于FFMPEG和SDL实现视频播放器

    这个是雷大牛实现的project. http://download.csdn.net/detail/leixiaohua1020/5122959 有兴趣的能够好好研究研究.