作者:
wsx100 (喝車開酒)
2014-04-19 02:45:20開發平台(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正確讀入呢@@?
之後要能夠支援依照標點符號切割成子字串..
請高手指點!
謝謝
作者:
carylorrk (carylorrk)
2014-04-19 03:08:00UTF8-CPP 之類的來幫忙,不然就先用 iconv 轉成等寬的?不過後者要小心自己檔案的編碼
作者:
LPH66 (-6.2598534e+18f)
2014-04-19 07:04:00嗯...我只能說用 wchar_t 是完全走錯路了wchar_t「一般來說」是用在 UTF-16LE 上的(加引號表示這不是標準規定的, 而是 Win 平台的 ABI 設定)UTF-8 的話最通常的方法還是讀成 char 陣列之後再去解碼到這時可能會經由一些手段轉成 wchar_t, 但並不是直接讀入再者你的後續問題「依照標點符號」, 你的那些標點符號的指定也要小心, 不然很有可能即使正確讀進來了但還是切不開
作者:
GameHeven (Mark Williams)
2014-04-19 09:55:00UTF8每個字是1~6個bytes,你要自己偵測,自己切割
之前有試著做也是大失敗...字不一樣長不知道有沒有LIB可用
作者: LiloHuang (十年一刻) 2014-04-19 13:29:00
code看起來跟UTF-8沒什麼關係啊,不過locale為什麼要設成空的? 試試UTF-8的locale? 如果你要切的標點符號是ASCII的話,那也不用特別處理,普通的strtok/strsep都可以你只要弄對locale確保資料傳得過那一層就好了
作者:
donkeychen (Bad_To_The_Bone)
2014-04-21 11:46:00