![](/img/trans.png)
[英]Java - Cannot read special characters correctly in BufferedReader
[英]Android: BufferedReader trouble with special characters
我在讀取來自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);
好吧,nginx編碼是UTF8(在標頭上確認),MySQL表也是如此。
使用HTTP客戶端(如Postman)仍然讓我“空”來代替特殊字符。
將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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.