我无法读取来自收到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);
我也尝试过,但没有成功:
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"),8192);
答案 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