2011-11-05 90 views
1

我正在做一个Android项目。我也是一个android开发者。在我的android应用程序中,我使用php作为我的web服务提供者。在我的身份验证的PHP代码我检查用户vaidity并返回字符串1或0.在android应用程序我得到的字符串。但是当我检查它在一个条件它失败。是由于任何charset compatablity问题。Android - php字符串编码

在PHP代码

..... 
if($auth) { 
echo '1'; 
} 
else { 
echo '0'; 
} 

在android系统

//get the code and saved in to string loginStatus; 
if(loginStatus == "1") { 
//not getting into this part if the loginStatus is 1; 
} 
else { 
//getting into this part 
} 
+0

尝试调试。什么是'loginStatus'值? –

回答

1

==运营商检查,看两个字符串引用指向一模一样字符串实例。因此,即使您有两个字符串,其值均为"1"==运营商仍然可以返回false

为了比较字符串字符逐字符使用String.equals

if (loginStatus.equals("1")) { 

要查看==equals之间的差看到该简化的例子:

String a = new String("1"); 
String b = new String("1"); 
System.out.println("a == b: " + (a == b)); 
System.out.println("a.equals(b): " + a.equals(b)); 

结果:

 
a == b: false 
a.equals(b): true 

查看此代码的运行在线:ideone


注:如果loginStatus可以为空,你还需要检查是否有过,否则反向字符串的顺序,使字符串常量是第一:

if (loginStatus != null && loginStatus.equals("1")) { 

或者:

if ("1".equals(loginStatus)) { 
+0

我工作感谢哥们。但你可以用==运算符来详细说明问题。因为我对android和java开发很陌生。你可以分享任何帖子或文章,或者如果你不介意,你可以在这里发布原因... –

+0

在怀疑同样的字符串实例是什么意思。就像我有一个变量字符串测试='1';和字符串response = entity.tostring();是测试==响应返回false。它们都是相同的类型。 –

+0

是可能的整数:)... –