2013-06-03 32 views
1

我有一個應用程序,我用JSON格式檢索一些數據。 JSON文件中的某些字符串使用外語,如阿拉伯語,印地語等。我嘗試使用UTF-8對字符串進行解碼,但它仍然顯示亂碼,而不是原始腳本。任何想法如何我可以實現這一目標?Android顯示外語字符串

編輯:我從JSON

String result; // result in string format obtained from server 

JSONTokener tokener = new JSONTokener(result); 

JSONObject obj = new JSONObject(tokener); 

String msg = obj.getString("message"); 

TextView message = TextView) findViewById(R.id.inbox_msg); 

try { 

message.setText(new String(msg.getBytes(), "UTF-8")); 

} catch (UnsupportedEncodingException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 

什麼不對我做的字符串解碼的方法是什麼?

P.S. :我嘗試使用DroidHindi.ttf文件來顯示文本,但它不起作用。我正在三星Galaxy Tab 2上運行應用程序7.0

+0

嘗試使用字體文件 – MDMalik

+0

您可以驗證它是否解碼正確的unicode點嗎?如果是這樣,我會第二MDMalik,並責怪你正在使用的字體。 – Fildor

+0

@Fildor沒有你「如果是這樣,我會第二......」 – MDMalik

回答

1

Android支持默認的阿拉伯語言。在服務器端的印地語你應該統一印表文字和在客戶端(android)解碼文本並打印值。請記住,在客戶端和服務器端,你應該使用相同的字體來unicode和解碼文本(在前我使用過Kruti DEv 10.TTF)。 http://www.infowebservices.in/hindi/參考這個網站將hindi文本轉換爲unicode,否則使用一些庫。

LinearLayout mainLayout=new LinearLayout(this); 
     mainLayout.setOrientation(LinearLayout.VERTICAL); 
     setContentView(mainLayout); 

     TextView arbicView=new TextView(this); 
     arbicView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     arbicView.setText("الغارديان: انقسام بين سكان الجولان حول نظام الاسد"); 
     mainLayout.addView(arbicView); 


     TextView hindiView=new TextView(this); 
     hindiView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
     hindiView.setText("Hghgfdhgfhsdgfh h hhfh hkshfkuifyeryeuiryhdfjkhdfuiyerihjkfhsdjkyruiweyk"); 
     hindiView.setTypeface(Typeface.createFromAsset(getAssets(), "Kruti Dev 10.TTF")); 
     mainLayout.addView(hindiView);