作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用以下代码从服务器检索通过 PHP 回显的响应。执行此代码时,字符串比较方法compareTo() 和(...).equals(..) 无法正常工作。我尝试了各种选项,并且确信尽管似乎将响应转换为字符串格式,但“responseText”并不具有典型的字符串属性。如果我有 3 个字符串文字语句,其中之一是从 findUser.php 中回显的。我怎样才能将它读入java以允许我确定字符串的内容,就像我在这里尝试做的那样?我发现很多关于需要创建 BufferedReader 对象的讨论,但我不明白如何实现它。如果有人能为我列出步骤,我将非常感激。
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(".../findUser.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
final String responseText = EntityUtils.toString(response.getEntity());
if(responseText.compareTo("Not Registered") == 0 || responseText.compareTo("Error") == 0) {
Log.i("KYLE","TRUE");
// DISPLAY ERROR MESSAGE
TextView loginError = (TextView)findViewById(R.id.loginErrorMsg);
loginError.setVisibility(View.VISIBLE);
loginError.setText(responseText);
}
else {
GlobalVars.username = userEmail;
Login.this.finish();
Intent intent = new Intent(Login.this,Purchase.class);
startActivity(intent);
}
catch(Exception e) {Log.e("log_tag", "Error in http connection"+e.toString());}
}
最佳答案
如果您的 responseText
日志消息看起来正确,但比较方法返回 false,则您可能存在字符集问题。在许多情况下,看似相同的字符出现在不同字符集的不同代码点上。
EntityUtils.toString() 的文档指出当未指定字符集时,它会尝试分析实体或只是回退到 ISO-8859-1。
UTF-8 通常是安全的默认值。尝试将其添加到 PHP 脚本的顶部:
<?php
header('Content-Type: text/plain; charset=utf-8');
?>
EntityUtils 应该会选择它,如果没有,您可以将“utf-8”传递给 toString() 方法以强制它使用相同的字符集。
关于java - 读取从 PHP 回显的字符串到 java 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5958743/
我是一名优秀的程序员,十分优秀!