Android中使用HttpConnection发送中文到服务器端乱码解决办法
来源:互联网 发布:淘宝仓库发货管理制度 编辑:程序博客网 时间:2024/05/18 19:36
最近在写一个简单地案例,是将二维码扫描的信息发送到服务器端,并存储到数据库。以前的测试都是用英文,没出什么问题,今天试了一下中文,却发现传到服务器端的全是乱码。
解决步骤:
1、服务器端是用PHP来写,所以在保证文件保存为utf-8格式的前提下,在加上头声明:header("Content-type: text/html; charset=utf-8");
可乱码依旧,将服务器端获取到的乱码拿到,试图解码,发现并不行。
2、看来问题出在客户端。客户端是用 HttpURLConnection的连接,补上这两句connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
设置了客户端的编码格式,包括检查项目的编码方式,都是utf-8。无奈寻求Google,最终发现问题
错误代码:
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); outputStream.writeBytes(paramsStr.toString());
改正后:
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); outputStream.write(paramsStr.toString().getBytes());
可以看出主要问题出在writeBytes()和write()这儿
void write(byte[] b) -------- 把参数b指定的字节数组中的所有字节写入到输出流中,将 b.length 个字节从指定的 byte 数组写入此输出流。
void writeBytes(String s) ----- 以字节序列的形式向文本中写入一个字符串,写入一个字节到底层流为1个字节的值。成功执行此方法该计数器加1递增。
在java中,中文为一个char,也就是两个字节16位,直接使用writeBytes,会丢弃高8位,只写入低8位的一个字节所以会造成中文乱码。而改正后的方式是先存入字节数组,然后再写入到输出流,不会乱码。
0 0
- Android中使用HttpConnection发送中文到服务器端乱码解决办法
- Android发送汉字到服务器端为乱码解决办法
- HttpConnection传递中文乱码
- Android HttpConnection 使用
- 导入java项目到eclipse中中文乱码的解决办法
- Android的HttpConnection和HttpClient发送请求
- 服务器端中文显示正常,浏览器显示乱码解决办法
- Android 开发中Eclipse中文乱码的解决办法
- HttpConnection的post请求发送数据,接收方出现乱码
- 解决android中客户端和服务器端的数据传输中文乱码问题
- 解决android中客户端和服务器端的数据传输中文乱码问题
- 后台return中文到前台乱码 解决办法
- js到服务器端的URL中文乱码问题
- 在struts2中使用url传递中文到后台乱码
- BlackBerry通过HttpConnection来发送数据到Web服务器
- Android 模拟发送短信 中文乱码
- Struts2使用response发送中文时乱码
- 使用python发送邮件,无中文乱码。
- 在eclipse上配置maven
- Spark函数讲解:combineByKey
- JQuery之attr与prop
- 关于在服务器上发布网站遇到的两个问题之解决方案
- NYoj_104最大和
- Android中使用HttpConnection发送中文到服务器端乱码解决办法
- 转转 iOS多线程的初步研究
- Poj 2790:迷宫
- POJ 1005 I Think I Need a Houseboat GCC编译
- 享元模式
- SQL命令和常用语句大全
- java设计对象处理
- oracle数据库之入门级语句(DOS命令符)
- 聊一聊这三个月