Java Android显示外语字符串

Java Android显示外语字符串,java,android,json,string,Java,Android,Json,String,我有一个应用程序,可以检索JSON格式的数据。JSON文件中的一些字符串是用外语编写的,如阿拉伯语、印地语等。我曾尝试使用UTF-8对字符串进行解码,但它仍然显示乱码,而不是原始脚本。你知道我怎样才能做到这一点吗 编辑:我从JSON解码字符串的方法 String result; // result in string format obtained from server JSONTokener tokener = new JSONTokener(result); JSONObject ob

我有一个应用程序,可以检索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();
}
我做错什么了吗


注意:我尝试使用DroidHindi.ttf文件来显示文本,但没有成功。我正在三星Galaxy Tab 2 7.0上运行该应用程序。Android默认支持阿拉伯语。对于服务器端的印地语,您应该对印地语文本进行unicode编码,在客户端(Android)解码文本并打印值。请记住,在客户端和服务器端,u都应该使用相同的字体来unicode和解码文本(在ex中,我使用了Kruti DEv 10.TTF)。请参考本网站将印地语文本转换为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);

Android默认支持阿拉伯语。对于服务器端的印地语,您应该对印地语文本进行unicode编码,在客户端(Android)解码文本并打印值。请记住,在客户端和服务器端,u都应该使用相同的字体来unicode和解码文本(在ex中,我使用了Kruti DEv 10.TTF)。请参考本网站将印地语文本转换为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);

您能否验证它是否解码了正确的unicode点?如果是这样,我会支持MDMalik并责怪你使用的字体。@Fildor没有告诉你“如果是这样,我会支持……”坦白地说,这是我第一次处理解码。那么,您能告诉我如何检查它是否解码了正确的unicode点吗?@MDMalik Yes?好的,它仍然可能是两种:坏的unicode和坏的字体。我在设备上使用默认字体。我不确定这是否会导致问题。您能验证它是否解码了正确的unicode点吗?如果是这样,我会支持MDMalik并责怪你使用的字体。@Fildor没有告诉你“如果是这样,我会支持……”坦白地说,这是我第一次处理解码。那么,您能告诉我如何检查它是否解码了正确的unicode点吗?@MDMalik Yes?好的,它仍然可能是两种:坏的unicode和坏的字体。我在设备上使用默认字体。我不确定这是否会引起问题。