Android:BufferedReader遇到特殊字符问题

时间:2013-07-27 15:46:21

标签: java android

我无法读取来自收到JSON字符串的HttpsURLConnection的特殊字符。当某些JSON元素具有特殊字符(例如ãáÇ)时,它们将显示为null,例如。这里的CTA元素在其文本{"duration":"17","cta":null}

的中间有一个URL url = new URL(resourceUrl); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),Charset.forName("ISO-8859-1")),8192); String line; StringBuffer response = new StringBuffer(); while ( (line = br.readLine()) != null ) response.append(line); 符号

除了具有特殊字符的元素外,我可以完美地阅读所有内容。

这是我的代码:

BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"ISO-8859-1"),8192);

我也尝试过,但没有成功:

  1. BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"),8192);
  2. {{1}}

1 个答案:

答案 0 :(得分:0)

嗯,nginx编码是UTF8(在标题上确认),MySQL表也是如此。

使用像Postman这样的HTTP客户端仍然让我" null"作为特殊字符的替代品。

将Charset.forName(" ISO-8859-1")更改为Charset.forName(" UTF-8")后问题仍然存在。

我通过在my.cnf:

的连接级别设置MySQL的字符集来解决它
[mysql]
character-set-client = utf8
default-character-set = utf8

[mysqld]
character-set-server = utf8
init-connect = 'SET NAMES utf8'

[client]
default-character-set = utf8