簡體   English   中英

Android:帶有特殊字符的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);

我也嘗試過,但沒有成功:

  1. BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"ISO-8859-1"),8192);
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM