首页 > 代码库 > Andriod中文乱码问题的解决方案
Andriod中文乱码问题的解决方案
做项目的过程中,经常会遇到乱码的问题。其实你了解乱码引起的原因的话,那么你就可以快速的定位乱码出现的问题。
所以我们要定位乱码的位置出现的地方,有一定工作经验的人,可以很快的定位出乱码的问题,并且可以给出解决方案。
定位乱码的步骤,其实也就两个步骤:
1.客户端引起的乱码
2.服务器端引起的乱码
只有你分析到这两个临界点的话,相信你可以很快的定位你的乱码出现的原因。
1.客户端乱码定位,首先你要确定服务器端是没什么问题的,然后你才可以定位客户端的乱码。
在这里,我假设你已经确定服务器是没什么乱码问题了。你才可以继续下去定位客户端的乱码原因。因为服务器端一直是乱码问题的话,你post或者get方式提交上去的内容也还是乱码。记住,这里的大前提是:服务器已经不会出现乱码问题,编码格式你可以去问问开发服务器端的同事。
下面我们来定位客户端的乱码的原因:
在你的客户端出现的乱码位置打断点,在代码。我这里用到Eclipse。打完断点DEBUG,走到你要查看的那一行代码,watch一下那个值,比如说我查看的一个变量是"content"。如果是乱码的话,这时你大可以确定就是客户端引起的乱码。当确定客户端出现问题之后,你看看那个地方用到了变量"content"。看看是赋值之前,还是赋值之后出现的乱码问题。
客户端乱码解决的方案:
1.统一编码格式,如果你是android客户端的。开发的IDE是Eclipse的话,将你的项目最好是设置为UTF-8(这里有一个建议:每次做项目的时候,首先将你的工程环境全部设置为utf-8)。当然,如果你之前没设置你的编码格式,这时候是比较棘手一点的。如果你的Eclipse一开始是没什么设置的话,默认是GBK或者ios8859-1。一般要显示正常的话,只能统一编码方式,才不会出现乱码。如果要正常显示中文的话,就要设置特定的编码格式:常见的中文编码格式:UTF-8, GBK, GB2312这几种。
关于在Eclipse中是怎么设置编码格式,具体百度。
2.如果你的代码统一不了的话,那么你就比较悲剧了。比如你之前没有设置你的工程编码格式,那么你的项目开发到一半了,而且又不是支持中文编码格式的。比如ISO8859-1,那么你只能在出现乱码的都解决一下。这就是我为什在之前建议(每次做项目的时候,首先将你的工程环境全部设置为utf-8)。以后可以省心好多。
new String(content.getBytes(Charset.forName("当前的编码格式")), Charset.forName("目标编码格式"));
new String(content.getBytes(Charset.forName("ISO8859-1")), Charset.forName("UTF-8"));//将ISO8859-1的content字符串转化成UTF-8的格式
上面的是解决字符串出现乱码的问题。
3.网络交互时出现的乱码解决方案
常见我们与网络交互的方式一般都是get或者是post方式。
在客户端的话,我们一般都是要encode一下,然后服务器那端在decode一下就能解决中文乱码问题了。跟服务器开发那端的协商好,那些字段需要decode。
Uri.encode()
2.服务端乱码定位,首先最好是确定服务器端有没什么乱码问题
一般服务器端乱码问题的是比较容易确定的,举个例子,比如我是做andriod客户端开发的。那么与网络交互的时候一般都会提供给我们接口的。那么我们直接用接口去确定接口提交中文有没问题?如果有问题的话,及时与服务器端开发的人协商。确定乱码问题的出现的问题。一般有经验的服务器端开发很快会给你建议,并且跟你说前端要用Uri.encode,,然后他在服务器端decode一下。这样服务端的乱码问题就解决了。然后你在整体测试一下,看看客户端是否会出现乱码问题,如果会出现问题,再跳到客户端乱码定位。
Andriod中文乱码问题的解决方案