2011-11-05 126 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

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