cocos2d-x学习笔记(二)序列帧动画实现的几种方法
2015-08-17 18:19
741 查看
今天在用HttpClient的PostMethod模拟浏览器用表单的post方法发送数据给服务器的时候,如果数据是中文,服务器接收的是乱码,然后看了很多乱码的文章,最后解决了,现在总结下.
1.首先搞清楚客户端是用那种编码方式将数据编码后提交的.
浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8
这样服务器端就可以知道form里的字符是怎么编码的了。要注意的是这里的charset=UTF-8是默认的,如果这个HTML代码里有<meta http-equiv="Content-Type" content="text/html; charset=GBK" />,那么此HTML的form表单将以GBK的编码方式提交数据,其实表单提交数据使用的编码方式是可以指定的.那现在用HttpClient,根本就没有浏览器和具体的HTML代码,其实HttpClient的PostMethod对象里已经有设定编码方式的方法
2.服务器端是如何选择那种编码方式来对数据进行解码的呢.
首先我用request.getCharacterEncoding()来看表单提交数据所使用的编码方法,奇怪的是用浏览器提交request.getCharacterEncoding()是null,而用HttpClient提交request.getCharacterEncoding()的值是UTF-8,和客户端指定的编码方式一致,后来google了下,原来是浏览器做的手脚,IE是不将表单提交数据使用的编码方式写到HTTP头部发送出去的.我发现如果用HttpClient的post提交数据,编码方式指定的话,request.getCharacterEncoding()是能得到值的,而且request对象也用此编码方式解码,不用request.setCharacterEncoding("")指定;如果request.getCharacterEncoding()是null,就要request.setCharacterEncoding("")指定编码方式,要和你提交时设定的编码方式一致.然后request.getParameter("")的值就是你想要的了.(这里有可能有误的地方请指出)
1.首先搞清楚客户端是用那种编码方式将数据编码后提交的.
浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8
这样服务器端就可以知道form里的字符是怎么编码的了。要注意的是这里的charset=UTF-8是默认的,如果这个HTML代码里有<meta http-equiv="Content-Type" content="text/html; charset=GBK" />,那么此HTML的form表单将以GBK的编码方式提交数据,其实表单提交数据使用的编码方式是可以指定的.那现在用HttpClient,根本就没有浏览器和具体的HTML代码,其实HttpClient的PostMethod对象里已经有设定编码方式的方法
PostMethod post = new PostMethod("http://iteye.com"); post.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8");这里的编码方式可以随意指定,开始就是因为没有写这段,采用了Httpclient默认的编码方式,所以出现乱码,这里设置编码方式的方法也不唯一.ajax使用post方法提交数据的编码方式的设定也和这个类似.
2.服务器端是如何选择那种编码方式来对数据进行解码的呢.
首先我用request.getCharacterEncoding()来看表单提交数据所使用的编码方法,奇怪的是用浏览器提交request.getCharacterEncoding()是null,而用HttpClient提交request.getCharacterEncoding()的值是UTF-8,和客户端指定的编码方式一致,后来google了下,原来是浏览器做的手脚,IE是不将表单提交数据使用的编码方式写到HTTP头部发送出去的.我发现如果用HttpClient的post提交数据,编码方式指定的话,request.getCharacterEncoding()是能得到值的,而且request对象也用此编码方式解码,不用request.setCharacterEncoding("")指定;如果request.getCharacterEncoding()是null,就要request.setCharacterEncoding("")指定编码方式,要和你提交时设定的编码方式一致.然后request.getParameter("")的值就是你想要的了.(这里有可能有误的地方请指出)
相关文章推荐
- (转载)我所理解Cocos2d-x 3.6(Lua):Cocos如何绑定Lua自定义类
- 14、Cocos2dx 3.0三,找一个小游戏开发Scene and Layer:游戏梦想
- cocos2dx-3.x lua绑定
- cocos2d-x在Android真机上使用Sqlite数据库
- cocos自定义类 绑定到lua
- Cocos2dx播放mp4文件(IOS和Android)
- COCOS2D-JS的屏幕适配方案
- CocoStudio:ImageView分析
- [转]cocos2dx中用外部浏览器打开url
- Cocos2d-x能够实现的效果总结
- Agar 流体效果的 Cocos2d-JS 实现
- Cocos2dx_背景层循环滚动
- 在cocos2d-x在CCTableView使用控制
- 9秒学院总结Cocos2d-X面试题
- Eclipse编译调试Cocos2d问题汇总
- Cocos2dx_视觉差效果层ParallaxNode
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第三节:3D摄像机
- 9秒学院总结Cocos2d-X面试题
- Cocos2d-x问题纪录:removeChild和附有PhysicsBody的csb动画
- Cocos2d-js中Chipmunk引擎