欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
dom4j 寫(xiě)文件編碼問(wèn)題
網(wǎng)上有很多介紹dom4j的使用的文章,包括官方自己的舉例。但是在寫(xiě)或者修改xml文件時(shí),如果直接按教程方法寫(xiě),就會(huì )遭遇編碼問(wèn)題,往往會(huì )報遇到不可 識別的符號的錯誤。而在windows系統下,用記事本打開(kāi)可能看起來(lái)很正常似的,比如看到xml編碼標簽那寫(xiě)的<?xml version="1.0" encoding="UTF-8"?>這樣的格式。細心的人用EditPlus打開(kāi),就會(huì )發(fā)現編碼實(shí)際上并非utf-8,可能是gbk。
我們來(lái)看寫(xiě)文件時(shí)用到的XMLWriter,他提供以下幾種構造方法:
XMLWriter ()
XMLWriter (OutputFormat format)
XMLWriter (OutputStream out)
XMLWriter (OutputStream out, OutputFormat format)
XMLWriter (Writer writer)
XMLWriter (Writer writer, OutputFormat format)
 
 最簡(jiǎn)單常用的可能是new XMLWriter(new FileWriter(...))這樣的形式??扇绻阋坏┻@么用,就會(huì )造成編碼問(wèn)題。由于dom4j對于文件編碼的選擇是才用java本身類(lèi)的處理方式 (可以從源碼看到),這么寫(xiě)就是采用FileWriter的處理方式,而FileWriter是不提供對編碼的處理的。于是會(huì )調用系統自身的編碼,比如用 中文操作系統,編碼方式就是gbk,然后默認的,他赫然會(huì )在文件頭寫(xiě)上<?xml version="1.0" encoding="UTF-8"?>。也就是說(shuō),他以當前操作系統的編碼保存文件,并且竟然自動(dòng)添加文件頭為"utf-8"格式,這會(huì )導致很多程 序無(wú)法讀取正確編碼,而且具有很差的移植性(比如在windows下開(kāi)發(fā),放到linux服務(wù)器下跑,畢竟一般linux服務(wù)器默認local都是 utf-8)。
解決途徑一:使用new XMLWriter(new FileOutputStream(...))方法。這樣做,因為dom4j默認使用utf-8編碼,即xml文件頭默認編碼方式,并且內容也會(huì )使用utf-8保存,這樣可以做到一致的編碼,不會(huì )出問(wèn)題。
解決途徑二:使用new XMLWriter(new FileOutputStream(...), outputFormat)的構造方法。
OutputFormat xmlFormat = OutputFormat.createPrettyPrint();
xmlFormat.setEncoding("utf-8");
XmLWriter writer = new XMLWriter(new FileOutputStream(...), xmlFormat);
writer.write(document);
writer.close();
如上,setEncoding可以設置存儲的文件編碼格式,createPrettyPrint是得到美化xml格式輸出。這樣的話(huà),在不同的環(huán)境下可以獲得同樣的編碼讀寫(xiě),并且真正保證了文件標稱(chēng)與實(shí)際編碼的一致性。
【注意】 如 果你使用OutputFormat是為了設置文件編碼,那千萬(wàn)別用 XMLWriter(new FileWriter(...), outputFormat)構造方法,因為前面已經(jīng)說(shuō)了,FileWriter不會(huì )處理編碼,所以即使你使用 format.setEncoding("utf-8");他仍然不會(huì )使用utf-8編碼,而只是把文件頭指定為utf-8,這類(lèi)似不使用 outputFormat的情況。而網(wǎng)上好多人舉例用了XMLWriter writer = new XMLWriter( new FileWriter( " output.xml " ),format); 那是因為他們format.setEncoding("gbk");而windows默認就是gbk,這當然使實(shí)際編碼與標稱(chēng)的配套了。但實(shí)際上,這種方 法是不正確的,java并沒(méi)有按你寫(xiě)的"gbk"進(jìn)行編碼,而是使用了系統默認編碼而已,放到linux就會(huì )出現錯誤,所以一定的小心。
 
把編碼交給操作系統來(lái)控制一向是罪惡的,包括java其他地方的參數傳遞等,如request的參數傳遞,其他文件讀寫(xiě),如果不使用編碼過(guò)濾器,不進(jìn)行編 碼指定,可能使得整個(gè)系統失去移植性,并產(chǎn)生完全不可預期的錯誤。找起來(lái)頭大不說(shuō),有時(shí)候看到encoding="UTF-8",實(shí)際上卻是gkb編碼會(huì ) 讓你錯過(guò)關(guān)鍵調試點(diǎn)。
還有就是記事本的罪惡性,用記事本打開(kāi)不同編碼的文件,往往得不到預期的效果,而且你無(wú)從得知他到底是用何種編碼打開(kāi),一般使用EditPlus指定編碼打開(kāi)會(huì )好很多。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
dom4j處理中文之編碼問(wèn)題_
Dom4j 編碼問(wèn)題徹底解決
利用dom4j生成XML
liferay 中文問(wèn)題
XML文件操作之dom4j
JAVA學(xué)習線(xiàn)路:day12-IO流[2]
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久