簡體   English   中英

Java字符轉換為UTF-8

[英]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.

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