我使用这个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");
但没有改变
答案 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")