标签:php android special-characters
我再次需要你的帮助.我想将Android应用程序中的特殊字符发送到PHP脚本,反之亦然.
Android代码
...
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.mypage.com/script.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("value", "Español"));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = client.execute(post);
StatusLine statusLine = response.getStatusLine();
if(statusLine.getStatusCode() == HttpURLConnection.HTTP_OK){
InputStream inps = response.getEntity().getContent();
InputStreamReader inp = new InputStreamReader(inps, Charset.forName("ISO-8859-2"));
BufferedReader rd = new BufferedReader(inp);
StringBuilder stringBuilder = new StringBuilder();
String bufferedStrChunk = null;
while ((bufferedStrChunk = rd.readLine()) != null) {
stringBuilder.append(bufferedStrChunk);
}
Result = stringBuilder.toString();
}...
PHP代码
<?php
header("Content-Type: text/plain;charset=ISO-8859-2");
echo $_POST["value"];
?>
第一步
我正在尝试将字符串“Español”从Android发送到PHP.我将字符串存储到MySQL表(UNICODE charset)中,我正确地得到了字符串.我还得到每个字符的整数值.结果是“Español”和“69.115.112.97.241.111.108”.因此,Android将字符“ñ”发送为241,其在UNICODE图表中定义为“ń”.在http://www.ssec.wisc.edu/~tomw/java/unicode.html#x0080看到它
第二步
我将字符串从PHP返回到Android,而不是得到“ñ”我得到“ñ”.这是我迷失的地方.这是什么时候改变,为什么有相同的数值,他们是不同的?这对我来说太过分了,我请求你的帮助.提前致谢!
解决方法:
在创建发送的URLEncodedEntity时使用ISO-8859-2.您可以将其设置为构造函数中的参数.
如果没有指定的字符集,您可能以UTF-8 / UTF-16(最常见)发送数据,服务器以不同的方式解释这些数据.
编辑:看起来ISO-8859-2不支持ñ.您可能需要更改服务器端的内容. http://en.wikipedia.org/wiki/ISO/IEC_8859-2
标签:php,android,special-characters 来源: https://codeday.me/bug/20190709/1415864.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。