在表中保存編碼到DB2 9.7 LUW的XML數據(UTF-8)時出現問題。將DB2 UTF-8 XML C2 85轉換爲新行轉換
表DDL:發生與稀有Unicode字符一些罕見例子
CREATE TABLE DB2ADMIN.TABLE_FOR_XML
(
ID INTEGER NOT NULL,
XML_FIELD XML NOT NULL
)
問題,我們用java JDBC DB2驅動程序。
例如尋找在正常模式下的編輯器不以十六進制視圖(記事本++)低於該奇怪A(16)之後在黑正方形表示爲NEL
輸入XML是UTF-8編碼看去時在HEX編輯具有此值:
00000010h: 31 36 2E 20 C2 85 42 ; 16. Â…B
在DB2中插入後,我假定某種轉換的發生是因爲選擇數據時回這個相同的字符現在
00000010h: 31 36 2E 20 0D 0A 42 ; 16. ..B
C2 85被轉換成新行的0D 0A。
彼此件事我注意到,保存XML到表頭內容時,雖然已開始與 <xml version="1.0" encoding="UTF-8">
但取出由DB2 XML內容後,開始
<xml version="1.0" encoding="UTF-16">
是否有辦法強制db2以UTF-8格式存儲XML而不進行轉換?與XMLSERIALIZE抓取並沒有幫助
SELECT XML_FIELD AS內容1,XMLSERIALIZE(XML_FIELD爲CLOB(1M))AS內容2從DB2ADMIN.TABLE_FOR_XML
IN內容2沒有XML頭,但窗框換行符是存在的。
沒有我cloudnt不在乎結束它們在某些輸入XML錯誤的產品,NEL線,我怎麼能幹淨XML在Java中從該C2 85? – Levijatanu
'xmlString = xmlString.replace(「\ u0085」,「\ r \ n」);'會做。換行NEL字符源於EBCDIC編碼,該編碼仍然用於某些IBM大型機(如AS/400)。 '\ u0085'以UTF-8編碼爲這兩個字節。 –