转换编码的utf-8 JSON

时间:2016-05-25 21:59:56

标签: php android mysql json utf-8

我使用这个PHP代码从MySQL数据库生成JSON:

    while($row =mysqli_fetch_assoc($result))
        {
$emparray[] = array_map('utf8_encode', $row);
        }
        echo json_encode($emparray);

然后我使用HttpUrlConnection获取url并获取Echo字符串:

  URL url = new URL("http://localhost/myserver.php");

            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream in = new BufferedInputStream(urlConnection.getInputStream());
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            result = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                result.append(line);
            }

印刷品是:

[{"id":"1","titulo":"C\u00f3digo de Defesa do Consumidor","descricao":"Institui o c\u00f3digo de defesa do consumidor","tags":"cdc","categorias":"cat_cod,cat_leisord","numero_da_lei":"13105","data_da_lei":"11111111","ativa":"1","byuser":"0","versao_da_lei":"0","url":"http:\/\/www.planalto.gov.br\/ccivil_03\/leis\/L8078compilado.htm"}]

我知道输出是编码的,因为我有$emparray[] = array_map('utf8_encode', $row);但如果我不使用它,那么具有特殊字符的文本将变为NULL。

如何转换

"titulo":"C\u00f3digo de Defesa do Consumidor"

"titulo":"Código de Defesa do Consumidor"

我试过了:

 new String(result.getBytes(), "UTF-8");

但没有改变

1 个答案:

答案 0 :(得分:0)

您可以使用StringEscapeUtils Apache Library https://commons.apache.org/proper/commons-lang/download_lang.cgi

要在数据库中保存unicodes,您必须对它们进行编码。因此,通过编码

将您的unicodes发送到服务器
StringEscapeUtils.escapeJava("Código de Defesa do Consumidor")

用于在android中显示编码的unicode

StringEscapeUtils.unescapeJava("C\u00f3digo de Defesa do Consumidor")