我的Java程序使用RTFEditorKit在RTF文件上進行文本提取。某些RTF文件包含西里爾字符(俄語),並且取決於RTF版本,提取的文本可以是好的或包含亂碼。當它的胡言亂語,我可以用它來得到正常的文字:在Java中檢測RTF文檔的編碼
String text = ... // extracted text
String decodedText = new String(text.getBytes("ISO-8859-1"), "cp1251");
現在的問題是,我無法找到一個方法來自動檢測文件的編碼,即是否提取的文本必須解碼或不解碼。有人知道怎麼做這個嗎?提前致謝!
編輯:在RTF文件的第一行我看到的東西,看起來像一個編碼:
- 文件在那裏我得到亂碼:{\ RTF1 \ ANSI \ ansicpg1251 \ deff0 \ deflang1049
- 帶好文本的文件:{\ rtf1 \ ansi \ ansicpg1251 \ deff0