我已經(jīng)看到關(guān)于同一問題的其他問題,但我仍然得到一個錯誤。Hier 是我嘗試修改外部 xml 文件的代碼的一小部分。但它會修改文本中的一些字符。import org.jdom2.Document;import org.jdom2.JDOMException;import org.jdom2.input.SAXBuilder;import org.jdom2.output.Format;import org.jdom2.output.XMLOutputter;import java.io.FileOutputStream;import java.io.IOException;public class ModyfyXml {public static void main(String[] args) throws JDOMException, IOException { try { SAXBuilder sax = new SAXBuilder(); Document doc = sax.build("F:\\c\\test.xml"); XMLOutputter xmlOutput = new XMLOutputter(); Format format = Format.getPrettyFormat(); format.setEncoding("UTF-8"); xmlOutput.setFormat(format); xmlOutput.output(doc, (new FileOutputStream("F:\\c\\test2.xml"))); }catch (IOException io) { io.printStackTrace(); } catch (JDOMException e) { e.printStackTrace(); }}}Hier 一個我嘗試修改的小 xml 文件(在這種情況下只是復(fù)制)<?xml version="1.0" encoding="utf-8"?><page> ?法喇嘛所居此處??仲無妻室亦降神附體</page> 程序啟動后,我得到以下信息:<?xml version="1.0" encoding="UTF-8"?><page>?法喇嘛所居此處𡸁仲無妻室亦降神附體</page>一些中文字符不能正確轉(zhuǎn)換
1 回答

白衣染霜花
TA貢獻1796條經(jīng)驗 獲得超10個贊
Dang 我從來沒有注意到 JDOM 2 中的這個錯誤。
對于任何非 BMP 字符,您將獲得相同的結(jié)果。你可以試試最近幾年的表情符號狂熱,看看你會得到同樣的結(jié)果。
這是因為轉(zhuǎn)義策略自動設(shè)置為 UTF-whatever 編碼。它的所作所為是相當錯誤的。
如果您將策略替換為除了 XML 保留字符之外不轉(zhuǎn)義任何內(nèi)容的策略,這將得到解決:
format.setEscapeStrategy((c) -> false);
添加回答
舉報
0/150
提交
取消