欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

java向php post数据时, 中文显示问号问题

程序员文章站 2024-02-19 09:53:11
...
php post 中文 php post 中文 java 我验证了一下几个状态
echo "你好"; // 你好
echo json_encode("你好") // /u4f60/u597d 这个我也无所谓
echo $_POST['key'] // ??

实际上我是在弄android, 连接用的包是org.apache.http下的

求解如何向php post中文

回复讨论(解决方案)

是编码的问题

echo base64_encode($_POST['key']);
贴出结果

编码问题,收到的post值需要转码,iconv

echo base64_encode($_POST['key']);
贴出结果

发送 ‘你’ 显示Pw==

echo base64_decode('Pw=='); //输出 ?
这就是说在发送的时候‘你’已经变成‘?’了

echo base64_decode('Pw=='); //输出 ?
这就是说在发送的时候‘你’已经变成‘?’了


decode输出的确实是'?'

我想应该是java和php编码问题吧
因为我php如果变量里存中文,去mysql做查询也是没问题的

你知道php.ini里怎么改编码吗

echo base64_decode('Pw=='); //输出 ?
这就是说在发送的时候‘你’已经变成‘?’了

好像是有可能发送的时候错了 不管什么中文单字都是Pw== 如果是两个字都是Pz8=

是这样得到request的
里面的addHeader不知道有没有意义

List listParams = new ArrayList();			if (params != null)			{				for (String name : params.keySet())				{					listParams.add(new BasicNameValuePair(name, params							.get(name)));				}			}			try			{				UrlEncodedFormEntity entity = new UrlEncodedFormEntity(						listParams);				HttpPost request = new HttpPost(url);				request.addHeader("charset", HTTP.UTF_8);				request.setEntity(entity);				return request;

这个?那个?你好像遇到了编码转换问题、mark一下

好了谢谢各位我已经解决了

UrlEncodedFormEntity entity = new UrlEncodedFormEntity(                        listParams);//改成UrlEncodedFormEntity entity = new UrlEncodedFormEntity(                        listParams,HTTP.UTF-8);

有可能的话就下把它注释掉