[英]Java character conversion to UTF-8
我在用:
InputStreamReader isr = new InputStreamReader(fis, "UTF8");
從文本文件中讀取字符並將其轉換為UTF8字符。
我的問題是,如果被讀取的一個字符無法轉換為utf8,會發生什么? 會有例外嗎? 或者會讓角色掉線?
你沒有從一個charset轉換到另一個charset。 您只是指示該文件是UTF 8編碼,以便您可以正確讀取它。
如果您想從1編碼轉換為另一種編碼,那么您應該執行以下操作
File infile = new File("x-utf8.txt");
File outfile = new File("x-utf16.txt");
String fromEncoding="UTF-8";
String toEncoding="UTF-16";
Reader in = new InputStreamReader(new FileInputStream(infile), fromEncoding);
Writer out = new OutputStreamWriter(new FileOutputStream(outfile), toEncoding);
在完成David Gelhar的回復后,我覺得這段代碼可以改進一下。 如果您不知道“inFile”的編碼,則使用GuessEncoding庫檢測編碼,然后使用檢測到的編碼構建閱讀器。
如果輸入文件包含無效的字節utf-8,則read()將默認使用值U + FFFD(65533十進制; Unicode “替換字符” )替換無效字符。
如果您需要對此行為進行更多控制,可以使用:
InputStreamReader(InputStream in, CharsetDecoder dec)
並提供符合您喜好的CharsetDecoder
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.