XML編碼utf 8有中文無法解析或亂碼 C

2022-04-23 13:56:17 字數 1232 閱讀 3419

xml的encoding="utf-8" ,含有中文的話(部分)會出現亂碼。

網上還是很多這類問題跟解決辦法的。

表現為用ie或者infopath之類的xml軟體打不開這個xml,txt開啟有時正常有時亂碼。

當然c#也是無法解析的。

但是用ultraedit開啟正常顯示,用ultraedit儲存為utf8後xml就一切正常了。

查詢發現是bom的原因。

什麼是bom呢?

bom:byte order mark,中文名位元組順序標記。ucs規範建議在傳輸位元組流前,先傳輸bom來判斷位元組順序。其實utf-8是不需要用bom來表明位元組順序的,但是可以用bom來表明編碼方式。bom的utf-8編碼是ef bb bf,所以呢,如果接受者收到ef bb bf開頭的位元組流,就說明它是utf-8編碼了。

由此可見,對於utf-8來說,bom是可有可無的,可是,有的xml解析方式不認這個bom,所以就報錯了。

解決辦法如下,強制把xml文字儲存為utf8格式就好了

xmldocument doc = new

xmldocument();

string xmlstring = readcontext(tmpdir + "

\\" +xml);

try

catch

(exception e)

, 格式錯誤,錯誤原因:

", e.message, xml));

continue

; }

readcontext函式是把xml裡的內容作為文字讀出來,注意編碼很重要,不能用default

system.text.encoding.utf8
private

static

string readcontext(string

path)

mysql 對utf8編碼 中文排序

select from m order by convert name using gbk asc eg select distinct b.id b.ach name,b.ach bussiness,b.ach finish date,b.ach finish unit m.areaid,a.ar...

讓 SciTE 支援中文 utf 8 編碼

讓 scite 支援中文的文章,google一搜一大片,但都是設定成gbk編碼的。對於我這種啥都utf 8的懶人來說,每次開啟檔案都要點 file encodeing utf 8 實在是太不方面了。自己仔細把全域性配置檔案看了一遍,發現原來有 本地化 的引數。現在只要在 sciteuser.prop...

PHP中文GBK編碼轉UTF 8

iconv 和 mb convert encoding的區別 string mb convert encoding string str,string to encoding mixed from encoding 需要先enable mbstring 擴充套件庫,在 php.ini裡將 exten...