簡體   English   中英

從InputStream讀取UTF-8編碼的文本

[英]Reading UTF-8 encoded text from InputStream

我在從輸入流中讀取所有日語/中文字符時遇到問題。

基本上,我是從API檢索JSON對象。

下面是我的代碼:

    try {
        URL url = new URL(string);
        BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),StandardCharsets.UTF_8));
        result = br.readLine();
        br.close();
    } catch(Exception e) {

}

由於某些原因,輸入流不會讀取所有字符。 可能是什么問題呢?

具體來說,當我在控制台中將它們打印出來時,會出現一些字符,而另一些字符則顯示為帶有問號的黑框。 另外,當我通過瀏覽器檢查實際的JSON對象時,沒有帶有問號的黑匣子。

“打印到控制台”時看到的內容實際上與是否讀取數據無關,但與控制台的功能有關。

如果您要從URL提取數據,並且可以確定所提取的字節代表UTF-8編碼的文本,並且整個數據都位於一行文本中,那么就沒有理由不能使您的代碼起作用。

聽起來您不確定是否可以正常工作,因為您正在嘗試將文本打印到控制台。 也許您的控制台未設置為呈現UTF-8編碼的文本? 也許您的控制台字體沒有足夠的標志符號來覆蓋該字體?

您可以嘗試以下兩種方法:

  1. 而不是將文本寫入控制台,而是將其保存到文件中。 然后使用hexdump -C類的命令(在* nix系統上,我不知道如何在Windows中執行此操作),並查看二進制表示形式,以確保所有期望的字符都在那里。

  2. 將數據保存到文本文件,然后在Web瀏覽器中將其打開,因為瀏覽器可能比控制台具有更豐富的字體支持。

如果仍然懷疑自己讀取了錯誤的遠程數據,則可以通過JSON驗證器運行檢索到的文本,以確保確定。

請嘗試以下方法:“ ISO-8859-1”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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