1. 程式人生 > >Java中IO流讀取文字出現亂碼的解決方法

Java中IO流讀取文字出現亂碼的解決方法

在編寫IO程式碼時,發現在讀取含有中文欄位的文字時,出現了亂碼,所以就查找了一下解決辦法,這裡借用一下其他博主的總結:
轉載地址:https://blog.csdn.net/qq_28950007/article/details/50760899

第一種方法:(不知道檔案的編碼),那通過"另存為"把你不知道的txt編碼改為UFT-8,弄一個新的檔案。
在這裡插入圖片描述

第二種方法,(知道檔案的編碼)用inputstreamreader讀取,並用改編碼形式讀取。比如,原檔案編碼是Unicode:
在這裡插入圖片描述

具體解釋,摘抄別的高手的如下:

Reader 類是 Java 的 I/O 中讀字元的父類,而 InputStream 類是讀位元組的父類,InputStreamReader 類就是關聯位元組到字元的橋樑,它負責在 I/O 過程中處理讀取位元組到字元的轉換,而具體位元組到字元的解碼實現它由 StreamDecoder 去實現,在 StreamDecoder 解碼過程中必須由使用者指定 Charset 編碼格式。值得注意的是如果你沒有指定 Charset,將使用本地環境中的預設字符集,例如在中文環境中將使用 GBK 編碼。

Txt有四種編碼:ANSI,Unicode, Unicode big endian,UTF-8

其中,ANSI又分很多種,有一種叫GBK;Unicode big endian又有很多種,有一種叫UTF-16BE。反正很亂,挑重要的瞭解就行了。

引用網友大神的獲取txt編碼的程式碼:
在這裡插入圖片描述

如果不知道編碼是什麼,或許可以把這段弄進去,自動獲取。