<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    inputstream 中文亂碼產生原因


    發現錯別字 1年前 提問
    回答
    1
    瀏覽
    438
    請勿發布不友善或者負能量的內容。與人為善,比聰明更重要!
    回答數量: 1
    等保高級測評師 NISP

    直接讀字節,而數據比較長,沒有一次讀完的時候,很可能剛好讀到一個漢字的前一個字節,這樣,這個中文就成了亂碼,后面的數據因為沒有字節對齊,也都成了亂碼。

    InputStream,字面意思字節輸入點,也就是說以字節為單位進行流式數據的讀取。它是所有字節輸入流的基類,同時是一個抽象類,如果要使用需要使用其子類。常見的有FileInputStream,從文件中讀取字節輸入流;BufferedInputStream是帶緩沖區的輸入流,它繼承于FilterInputStream。默認緩沖區大小是8M,能夠減少訪問磁盤的次數,提高文件讀取性能。不管是哪種字節輸入流,讀取的是字節byte,GBK每個漢字兩個字節,UTF-8每個漢字三個字節而當中英文混合的時候,有的字符占一個字節,有的字符占兩個字節。

    所以如果直接讀字節,而數據比較長,沒有一次讀完的時候,很可能剛好讀到一個漢字的前一個字節,這樣,這個中文就成了亂碼,后面的數據因為沒有字節對齊,也都成了亂碼。

    解決辦法,首先在讀取的時如果涉及漢字我們要設置字符集編碼,采用字符流進行讀取比如InputStreamReader,FileReader,BufferedReader 。

    回答所涉及的環境:聯想天逸510S、Windows 10。

    1年前 / 評論
    亚洲 欧美 自拍 唯美 另类