2017-08-23 36 views
1

在我的android項目中,當我將語言切換到阿拉伯語時,通話記錄頁面不顯示數據,但是當我切換到其他語言(如英語)可以正常顯示,如何解決,請看下面的信息。爲callLog適配器代碼當我將語言切換到阿拉伯語,通話記錄頁面不顯示數據

1.A部分如下:

holder.belong_area.setText("北京"); 

//顯示歸屬地 
     if (callLog.getBelong_area() != null && !callLog.getBelong_area().equals("")) { 
      LogE.e("item","有歸屬地:"+callLog.getBelong_area()); 
      holder.belong_area.setVisibility(View.VISIBLE); 
      holder.belong_area.setText(callLog.getBelong_area()); 
     } else { 
      LogE.e("item","沒有有歸屬地"); 
      holder.belong_area.setText(""); 
      holder.belong_area.setVisibility(View.GONE); 
     } 

2.It當我輸入一個固定的值,例如如下仍然不顯示數據

3.打印日誌的日誌如下:

10月8日至23日:07:13.241 17494-17494/com.allinone.callerid E /項目:有歸屬地:北京 08-23 10:07:13.607 17494-17494/com.allinone.callerid E/item: 有歸屬地:河北石家莊08-23 10:07:13.674 17494-17494/com.allinone.callerid E /項:有歸屬​​地:北京10月8日至23日:07:13.714 17494-17494/com.allinone.callerid E /項目:有歸屬地:湖北省,武漢市

4.Runtime截圖:

阿拉伯語(錯誤),

enter image description here

english language(right)

enter image description here

回答

0

你應該有正確的字符集的系統。

您可以檢查下面的代碼來檢測語言的charaterset。

public class CharsetDetectTest { 

    public static void main(String[] args) { 
     detectCharset("北京"); 
    } 

    public static void detectCharset(String originalStr) { 

     String[] charSet 
      = { "utf-8", "big5", "EUC-CN", "iso-8859-1", "gb2312" }; 

     for (int i = 0; i < charSet.length; i++) { 
      for (int j = 0; j < charSet.length; j++) { 
       try { 
        LogE.e("charaters", 
         "[" + charSet[i] + "==>" + charSet[j] + "] = " 
         + new String(originalStr.getBytes(charSet[i]), charSet[j])); 
       } catch (UnsupportedEncodingException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 

    } 
} 

調試輸出將是

[utf-8==>utf-8] = 北京 
[utf-8==>big5] = ��鈭� 
[utf-8==>EUC-CN] = ��浜� 
[utf-8==>iso-8859-1] = å京 
[utf-8==>gb2312] = ��浜� 
[big5==>utf-8] = �_�� 
[big5==>big5] = 北京 
[big5==>EUC-CN] = �_ㄊ 
[big5==>iso-8859-1] = ¥_¨Ê 
[big5==>gb2312] = �_ㄊ 
[EUC-CN==>utf-8] = ���� 
[EUC-CN==>big5] = 控儔 
[EUC-CN==>EUC-CN] = 北京 
[EUC-CN==>iso-8859-1] = ±±¾© 
[EUC-CN==>gb2312] = 北京 
[iso-8859-1==>utf-8] = ?? 
[iso-8859-1==>big5] = ?? 
[iso-8859-1==>EUC-CN] = ?? 
[iso-8859-1==>iso-8859-1] = ?? 
[iso-8859-1==>gb2312] = ?? 
[gb2312==>utf-8] = ���� 
[gb2312==>big5] = 控儔 
[gb2312==>EUC-CN] = 北京 
[gb2312==>iso-8859-1] = ±±¾© 
[gb2312==>gb2312] = 北京 

然後,使用正確的字符集之一。

holder.belong_area.setText(new String("北京".getBytes("utf-8"), "utf-8")); 

holder.belong_area.setText(new String("北京".getBytes("utf-8")); 

您可以查看中國系統字符site

最好的問候,

+0

這是我的榮幸。如果你認爲這對你有幫助,你可以爲我做點贊成^^。 – tommybee