Android:在JSON中解析特殊字符(ä,ö,ü)

时间:2011-04-04 08:27:07

标签: android json

有人可以帮助我,如何解析JSON中的特殊字符?由于我正在制作一个德国应用程序,它包含许多特殊字符,如ä,ö,ü,ß。有人可以通过解析JSON告诉我如何显示这些角色吗?现在它们只显示为'?'

这是我的JSON解析方法:

void examineJSONFile()
    {
        try
        {
            String y = "";
            InputStream is = this.getResources().openRawResource(R.raw.json);
            Writer writer = new StringWriter();
            char[] buffer = new char[1024];

            try {
              BufferedReader reader = new BufferedReader(
                new InputStreamReader(is, "UTF-8")
              );
              int n;
              while ((n = reader.read(buffer)) != -1) {
                writer.write(buffer, 0, n);
              }
            } finally {
              is.close();
            }

            String jsontext = writer.toString();

            JSONArray entries = new JSONArray(jsontext);

            int j;
            for (j=0;j<entries.length();j++)
            {
                JSONObject post = entries.getJSONObject(j);
                y += post.getString("description") + "\n";
            }
            txt_beschreibung.setText(y);
        }
        catch (Exception je)
        {
            txt_beschreibung.setText("Error w/file: " + je.getMessage());
        }

    }

谢谢。

2 个答案:

答案 0 :(得分:4)

此类字符必须至少采用UTF-8编码。检查您的文件是否以此信息保存。

答案 1 :(得分:3)

首先检查xml中的编码类型,UTF-8或ISO-8859-1

如果编码类型是ISO-8859-1,那么在程序中只需更改此代码以读取特殊字符

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();

XMLReader xmlReader =  parser.getXMLReader();
xmlReader.setContentHandler(this);
InputSource is = new InputSource(xmlUrl.openStream());
is.setEncoding("ISO-8859-1");
xmlReader.parse(is);