[英]How to real norwegian characters file in Java?
以下是我用來讀取文件的代碼。
InputStreamReader iReader = new InputStreamReader(new FileInputStream("myrecords.txt"),"ISO-8859-1");
BufferedReader bReader = new BufferedReader(iReader);
public static List<String> bufferedReaderToStringList(BufferedReader bReader) throws IOException {
List<String> stringList = new ArrayList<String>();
String text;
while ((text = bReader.readLine()) != null) {
stringList.add(text);
}
bReader.close();
return stringList;
}
當我從字符串中獲取數據並打印時,所有字符都會失真。 在“我的膩子”屏幕上,甚至我將其保存在數據庫中時,它仍然失真。 任何人都可以幫助解決問題
有人請指導我做錯了什么嗎?
Dolvenh�yda is distorted one. It is Norwegian character.
Dolvenhøyda is correct one.
您是如何將文本打印到控制台的? 可能是因為控制台實際上是在utf-8
假定字符iso-...
“轉換”打印的字符串可能會解決以下問題: Charset.forName("UTF-8").encode(myString)
InputStreamReader將InputStream(二進制數據)及其編碼(此處為ISO-8859-1)包裝在一起,以讀取文本,該文本在Java內部被保存為Unicode。 編碼必須正確。
InputStreamReader iReader = new InputStreamReader(
new FileInputStream("myrecords.xml"), "ISO-8859-1");
BufferedReader只是處理(假定是正確的)文本。
BufferedReader bReader = new BufferedReader(iReader);
因此,只有InputStreamReader可能是錯誤的。 您可以檢查XML文件。
默認情況下,UTF-8中的XML是<?xml ... encoding=... ?>
的編碼所覆蓋。 在某些情況下,這可能是一個謊言,但是單擊XML可以輕松顯示其正確性。
現在,給定正確的編碼,Reader,String等應該是正確的。
但是,輸出到控制台(System.out)會使用操作系統編碼,這可能會破壞給定的文本。
再次輸出到文件,將需要指定文件內容的所需編碼。 另外,還需要保持<?xml encoding=... ?>
正確。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.