Android访问服务器(TOMCAT)乱码引发的问题(转载)

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

1、浏览器往服务器发送的请求主要可分为2种:get、post;delete、head等不赘述。

GET方式:

从浏览器上直接敲地址,最大特点就是参数直接跟在地址后面。

POST方式:表单提交等。

2、访问过程:

浏览器中输入地址 –> 浏览器对中文进行编码 –>发送到服务器 ->服务器进行解码

如何浏览器编码和服务器解码用的字符集不一致就会发生乱码问题。

3、乱码的解决

默认浏览器使用UTF-8编码(IE默认GBK当然可以通过meta标签设置)

服务器(Tomcat)默认使用iso-8859-1解码。Iso-8859-1是不支持中文的,也就是说不做处理,中文是一定乱码的。

POST方式解决:

比如表单提交,在Servlet或者Filter中设置request.setCharacterEncoding("UTF-8");就能很好的解决。

GET方式:单纯设置request.setCharacterEncoding("UTF-8");是没有用的,所以我们把默认的iso-8859-1编码改成UTF-8,在TOMCAT的配置文件的server.xml中更改:

<Connector port="8080"protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" URIEncoding="UTF-8" />

添加URIEncoding=UTF-8

4、Android中访问:

POST方式,通过HttpUrlConnection封装POST请求【具体实现百度】,POST方式参数是需要打包发送的,不是直接跟在url后面。例如:http://www.demo.com?p=123这不是post传输参数。

GET方式,通过HttpUrlConnection可以很简单的实现,但是会发现,很容易出现乱码问题。

首先:添加URIEncoding=UTF-8工作完成,还是会发送乱码。

这是因为,上面的访问过程提到浏览器对中文进行编码,这里我们直接发送请求,并没有编码这个过程,所以我们需要自己手动编码,即:

String name =URLEncoder.encode("中国万岁","UTF-8");

这样我们就模拟了浏览器的编码,然后发送至服务器,服务器解码也改成UTF-8了,于是又可以快乐的玩耍了。

原文链接

本文由豆约翰博客备份专家远程一键发布

时间: 2025-01-09 08:17:32

Android访问服务器(TOMCAT)乱码引发的问题(转载)的相关文章

解决Android LogCat 输出乱码的问题(转)

Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的. 可以使用adb的logcat 命令来查看系统日志缓冲区的内容,但是在实际操作时,会发现在CMD的DOS界面上面,使用logcat命令直接输出的中文内容是乱码.如下图: 而这个问题只出现在使用logcat将日志直接打印在当前的DOS窗口的时候会出现:而使用logcat将日志保存为文件,再使用文本编辑工具打开的则显示正常,如图. 很明显是由于DOS窗口显示的编码同logcat日志中不同导致的

Android内存性能优化(内部资料总结) eoe转载

刚入门的童鞋肯能都会有一个疑问,Java不是有虚拟机了么,内存会自动化管理,我们就不必要手动的释放资源了,反正系统会给我们完成.其实Java中没有指针的概念,但是指针的使用方式依然存在,一味的依赖系统的gc,很容易就造成了内存的浪费. Java基于垃圾回收的内存机制 Java的内存管理机制会自动回收无用对象所占用的内存,减轻手工管理内存的负担 1.C/C++: 从申请.使用.释放都需要手工管理 2.Java:无用的对象的内存会被自动回收 什么样的对象是无用的对象 1.Java通过引用来操作一个具

Android studio 中文乱码问题解决

针对刚安装好的Android studio, 比如import工程时,你会发现你的很多中文目录显示异常,如下图: 为什么会出现这个问题呢,其实原因很简单,因为Android studio的默认Font并不支持中文. 怎么解决呢,打开settings,如下图: 选择用红色框框起来任意一种,那为啥都是乱码呢,因为这些都是中文字体的格式,所以在你设置之前当然也是显示不了. 或者你也可以选择'simsun'.这个样式也很多人在用. OK,这样就可以了! Android studio 中文乱码问题解决,布

android:一个Open键引发的问题!!

1.问题简介 首先描述一下问题,当我们安装完APP的时候,界面会显示两个按钮,一个完成键,一个Open键,点击Open键之后,进入应用.此时,我们点击HOME键,程序将会后台.然后再点击该桌面上应用程序的图标,巨大的BUG出现了:app会重新启动!而不是将原来的界面onresume!如果你的应用对多次启动不敏感,这道没什么,但是,如果你的应用对多次启动很敏感,你就必须做处理了. 2.解决方案 首先分析问题成因,在android目前的系统下(最新的为4.4.3),点击Open键和点击图标启动时,I

Android访问服务器

做cocos2dx已经有好一段时间了,在这段时间里,也不断接触android.一直没有时间写下自己的工作经历,今天抽点时间记下一段. 关于android访问服务器获取数据的方法: 传输协议使用http通信方式,本次使用的是POST.http协议的pathname存放在变量cmd中,协议的内容格式为json. 1 String urlStr = "http://219.234.95.44:6789" + cmd;//"10.1.30.220"; 2 // urlStr

tomcat乱码原因--基本的编码问题

tomcat乱码原因:在学习servlet时候,经常会遇到中文乱码的问题,网上查只知道如何设置不乱码,其中的原理不是很明白.我认为明白其中的原理,乱码问题就很容易解决 tomcat乱码解决方法: post请求: request.setCharacterEncoding("utf-8"); 如果不想每个请求方法里都写就写一个filter过滤器 get请求: 1.修改tomcat中的server.xml文件 <Connector port="8080" maxTh

tomcat部署与Context 【转载】

首先说说tomcat的几种部署方法: 1.将应用文件夹或war文件塞到tomcat安装目录下的webapps子目录下,这样tomcat启动的时候会将webapps目录下的文件夹或war内容当成应用部署.这种方式最简单且无须书写任何配置文件. 2.在tomcat安装目录下的conf子目录下的server.xml配置文件中的Host节点下添加Context字节点:<Context path="/name" docBase="..." />,其中path属性是

Android与Tomcat服务器的应用

在Tomcat的根目录中放入一张图片...webapps\ROOT\people,jpg,利用手机和服务器交互j获取这个图片,桌面布局就是简单的线性布局,代码:<TextView android:textSize="25dp" android:text="服务器图片的地址:" android:layout_width="wrap_content" android:layout_height="wrap_content"

Android WebView中的JavaScript代码使用(转载)

转载来源:http://www.cnblogs.com/mengdd/archive/2013/03/02/2940185.html 本篇文章主要介绍WebView中的JavaScript代码的执行相关,已经JS代码与Android代码的互相调用. (因为本人对Web开发并不是很熟悉,所以如果有哪些地方说得不对,还请指正.) 在WebView中使用JavaScript 如果你想要载入的页面中用了JavaScript,你必须为你的WebView使能JavaScript. 一旦使能之后,你也可以自己