将utf-8编码转换为android中的String

时间:2013-07-03 12:48:43

标签: android string utf-8

我有json值喜欢

\u092a\u093e\u0932\u094d\u092a\u093e\u0915\u093e \u092c\u0928\u094d\u0926\u0940\u0939\u0930\u0942 \u0915\u093e\u0930\u093e\u0917\u093e\u0930\u092d\u093f\u0924\u094d\u0930\u0948 \u0905\u0938\u0941\u0930\u0915

我们如何获取String或如何在android中解码它并在文本视图中显示它。

我对它执行了一些操作,但它显示了log ??????????????????????????????

可以帮助我一些人。 谢谢

3 个答案:

答案 0 :(得分:7)

来自ref from here。您只需要新的String(字节,字符集)和String.getBytes(charset)..

尝试以下代码

 String data = "\u092a\u093e\u0932\u094d\u092a\u093e\u0915\u093e \u092c\u0928\u094d\u0926\u0940\u0939\u0930\u0942 \u0915\u093e\u0930\u093e\u0917\u093e\u0930\u092d\u093f\u0924\u094d\u0930\u0948 \u0905\u0938\u0941\u0930\u0915";
            byte[] bute = null;
            bute = data.getBytes();
            try {
                String asd= new String(bute, "UTF-8");

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

我相信它会打印你想要的数据......

希望这会有所帮助..

答案 1 :(得分:1)

问题是您将加密数据转换为字符串。加密数据是二进制,而不是字符串数据。 UTF-8是具有特定编码格式的字符集。任意二进制数据不是有效的UTF-8数据。当您将加密数据转换为字符串时,“无效”字符最有可能被替换为?无效的char。

如果要将任意二进制数据(也称为加密数据)转换为字符串,则需要使用binary->text之类的Base64转换。

答案 2 :(得分:-2)

K感谢朋友们的回复所有给定的代码都可以在Real设备上运行,但它不能在模拟器上运行

我们不必在真实设备上显示文本,只需在textview中设置文本,它就可以正常工作。

tv1.setText(str);