看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux, gcc 問題(Question): 文件是xml 採用UTF-8編碼 如果用char *[]去處理的話 之後要針對標點符號split會失敗 所以我查到用wchar_t *[]去處理 可是結果不如預期 餵入的資料(Input): 底下連結是xml檔案 https://dl.dropboxusercontent.com/u/100819329/file.zip 預期的正確結果(Expected Output): <?xml version="1.0" encoding="UTF-8"?> <xml> <p> <id>01</id> <p>你好</p> 錯誤結果(Wrong Output): <?xml version="1.0" encoding="UTF-8"?> <xml> <p> <id>01</id> <p> 程式碼(Code):(請善用置底文網頁, 記得排版) https://gist.github.com/anonymous/11058612 補充說明(Supplement): 我從下午6點用到晚上2點還沒搞定@@ 或是有別的方法可以把UTF-8的xml正確讀入呢@@? 之後要能夠支援依照標點符號切割成子字串.. 請高手指點! 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.189.178 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1397846723.A.CEC.html ※ 編輯: wsx100 (111.249.189.178), 04/19/2014 02:53:49
carylorrk:UTF8-CPP 之類的來幫忙,不然就先用 iconv 轉成等寬的? 04/19 03:08
carylorrk:不過後者要小心自己檔案的編碼 04/19 03:09
LPH66:嗯...我只能說用 wchar_t 是完全走錯路了 04/19 07:04
LPH66:wchar_t「一般來說」是用在 UTF-16LE 上的 04/19 07:06
LPH66:(加引號表示這不是標準規定的, 而是 Win 平台的 ABI 設定) 04/19 07:06
LPH66:UTF-8 的話最通常的方法還是讀成 char 陣列之後再去解碼 04/19 07:07
LPH66:到這時可能會經由一些手段轉成 wchar_t, 但並不是直接讀入 04/19 07:07
LPH66:再者你的後續問題「依照標點符號」, 你的那些標點符號的指定 04/19 07:08
LPH66:也要小心, 不然很有可能即使正確讀進來了但還是切不開 04/19 07:09
GameHeven:UTF8每個字是1~6個bytes,你要自己偵測,自己切割 04/19 09:55
prismwu:之前有試著做也是大失敗...字不一樣長不知道有沒有LIB可用 04/19 11:23
LiloHuang:編譯器版本如果夠新可以試試 http://goo.gl/xn9lLo 04/19 13:29
buganini:code看起來跟UTF-8沒什麼關係啊,不過locale為什麼要設成 04/19 17:27
buganini:空的? 試試UTF-8的locale? 如果你要切的標點符號是ASCII 04/19 17:27
buganini:的話,那也不用特別處理,普通的strtok/strsep都可以 04/19 17:28
buganini:你只要弄對locale確保資料傳得過那一層就好了 04/19 17:29
donkeychen:http://nopaste.info/bccc56a8e1.html 不知道有沒有幫 04/21 11:46
donkeychen:助 04/21 11:46