我有一个应用程序,我以JSON格式检索一些数据。 JSON文件中的一些字符串是外语,如阿拉伯语,印地语等。我尝试使用UTF-8
解码字符串,但它仍然显示乱码,而不是原始脚本。知道如何实现这个目标吗?
编辑:我从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 :(得分:1)
Android默认支持阿拉伯语。对于服务器端的印地语,你应该对hindi文本进行unicode,在客户端(android)解码文本并打印值。请记住,在客户端和服务器端,你应该使用相同的字体来解码和解码文本。(在前面我使用过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);