关于Tomcat/Android/JAVA交互时中文传输乱码的解决方法

最近在做项目的时候,与服务器交互传输信息时,出现中文乱码问题。由于一开始对编码这个东西不是很了解,都是一知半解状态,平时所谓的程序中的转码也都是基于侥幸的过去了,没遇到什么问题。可这次却没这么幸运了,中文乱码。。。。,好了,废话不多说了,直入主题

如何才能正确解码?首先要清楚的知道源数据是以什么样的编码方式encode过来的,然后再以对应的编码方式decode才能正确解码,否则就会变成乱码!

举例说吧:

以Tomcat作服务器,默认的环境编码是ios-8859-1,客户端编码方式为UTF-8(通常很多人都喜欢把编码方式设置成UTF-8吧,呵呵)。当客户端Get/Post数据时,参数值中包含中文时,这里要注意了,GET/POST是有区别的:

GET时,Tomcat会以默认的环境编码iso-8859-1方式进行一番解码,这样就会导致中文的地方变成乱码了,要想解决这个问题,可以逆编码一下,new String("乱码字符串".getBytes("iso-8859-1"), "UTF-8"),就能正常显示了。

POST时,就不会先以Tomcat的默认编码时行解码,而是以你设置的过滤器中的编码方式来解码了(比如你设置的是UTF-8)。

当然还有其它更多的方式和方法,比如你可以在GET方式请求时,进行两次URLEncode.encode("中文", "UTF-8");,这样Tomcat服务端只要进行一次URLDecode.decode("参数值", "UTF-8");就可以了。原因是:第一次URLEncode是对中文转换成%、字母和数字,第二次URLEncode是对%、字母和数字进行编码,因此在Tomcat服务端默认使用iso-8859-1进行解码后的结果是%、字母和数字,再URLDecode.decode就可以正常显示中文。

时间: 2024-08-02 02:47:43

关于Tomcat/Android/JAVA交互时中文传输乱码的解决方法的相关文章

访问tomcat出现java.lang.IllegalStateException No output folder错误解决方法

访问tomcat出现java.lang.IllegalStateException: No output folder错误解决方法 问题:tomcat分为安装版和解压缩版,解压缩版如果解压到安装盘,在浏览器中访问http://localhost:8080,可能会出现500错误,错误提示如下: localhost:8080 java.lang.IllegalStateException: No output folder 原因如下:tomcat目录没有被读写的权限,导致文件不能被编译到指定的工作目

ubuntu 中用vim打开txt等文件中文显示乱码的解决方法  

今晚用ubuntu 12.04 的vim编辑网页代码时,发现上面的中文显示乱码.这个html文件是我之前用gedit编辑的,在gedit里面显示正常,可是在vim下显示就是乱码了. 怎么解决ubuntu中vim显示中文乱码的问题呢? 首先,添加中文字符编码: sudo gedit /var/lib/locales/supported.d/local 在打开的文件中添加下面的中文字符集 zh_CN.GBK GBK zh_CN.GB2312 GB2312 zh_CN.GB18030 GB18030

ASP.NET中文显示乱码之解决方法

在config.web中设置globalization段 <configuration> <globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/></configuration> 可以是utf-8.gb2312等等. ASP.NET中文显示乱码之解决方法

php上传文件中文文件名乱码的解决方法

想必很多朋友在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传中文文件名的文件时,文件名会变成乱码,其实我们可以用iconv函数对文件名进行重新编码就解决问题了 可能会有不少朋友碰到一些问题就是上传文件时如果是英文倒好原文名不会有问题,如果是中文可能就会出现乱码了,今天我来给大家总结一下导致乱码php上传文件中文文件名乱码的原因与解决办法吧. 这几天在windows下安装了XAMPP,准备初步学习一下php的相关内容.这几天接触到了php上传文件,但是出现了一个郁闷问

php 文件中文文件名乱码的解决方法

想必很多朋友在进行utf8编码的php开发上传功能的时候,都会遇到这样的一个问题,就是上传中文文件名的文件时,文件名会变成乱码,其实我们可以用iconv函数对文件名进行重新编码就解决问题了 php文件使用的是UTF-8编码,如果没有猜错APACHE处理用的应该是GBK.想明白了这个问题,就去查找相关的教程了,索性找到了iconv这个函数. 函数原型:string iconv ( string in_charset, string out_charset, string str )使用例子:$co

命令行编译java源文件提示 “编码GBK的不可映射字符” 及输出的中文变为乱码的解决方法

使用命令行编译运行java代码,编译时出现 “编码GBK的不可映射字符” 的错误提示,并且需输出的中文全部变为乱码,此时有两种解决方法: (方法一) 在输入 javac 命令时,额外输入 -encoding utf-8, 例如:如果编译的源文件名为 Test.java ,那么编译时原先只需输入 javac Test.java,而现在需要输入 javac -encoding utf-8 Test.java (方法二) 使用 EditPlus 软件编写代码时,通过修改相关设置然后保存文件即可,具体操

Saiku图表导出时中文显示问题的解决方法

Saiku图表导出时png,jpg,pdf三种格式的中文显示都有问题,目前找到一种不太完善的解决方法(中文可以显示但不清晰),需要修改Saiku项目下的ExporterResource.java文件,同时需要在项目Linux环境中安装中文字体,完成后重启项目即可. 后续找到更好的解决方案时会更新此文或者给出新文章地址. Linux环境中安装中文字体请参考:http://blog.163.com/[email protected]/blog/static/136739312201474421492

JAVA 中URL中文参数乱码的处理方法(汇总)

解决输入的全角汉字或者日文在URl中乱码的问题.以下我的实现 JS代码: function shiborikomuFw() {     var url = '${url08}';     var str = document.getElementsByName('fw');     //Str str = document.getElementsById('fw').Value;     for (var i = 0; i < str.length; i++) {     url = url +

win使用telnet到ubuntu下vim显示中文为乱码的解决方法~

1.几个路径: ubuntu: /etc/default/locale  相当于 centos:/etc/sysconfig/i18n vimrc的路径:① ~/.vimrc    ② /etc/vim/vimrc 2. 解决方法: ①添加语言支持 $sudo vim /var/lib/locales/supported.d/local# 添加下面的中文字符集zh_CN.GBK GBK zh_CN.GB2312 GB2312 zh_CN.GB18030 GB18030使其生效:$sudo dpk