我解析的XML文件可以包含不同語言的本地化字符串(目前只有英文和西班牙文,但將來可能是任何語言),API XML解析器通過UTF8編碼的char *返回XML中的所有數據。在寬數據上使用窄字符串操作函數
對數據進行解析後(在其中搜索子串,連接字符串,確定子串長度等)需要對數據進行一些處理。
使用strlen,strcat等標準函數會很方便。由於我從XML解析器接收到的原始數據是char *,我可以使用這些標準字符串處理函數輕鬆完成所有操作。
但是,這些當然都假設和要求的字符串是NULL終止。 因此,我的問題是 - 如果您將寬數據表示爲char *,那麼可以在數據內部而不是在數據末尾出現NULL終止符?
即,如果某個特定語言的字符不需要2個字節來表示它,並且它在一個字節中表示,那麼其他字節是否可以爲NULL?
因此,如果解析器返回UTF8我可以在UTF-8數據上作爲char *操作,然後在顯示字符串之前調用UTF8toUTF16轉換函數? (gui元素使用uint16 *(無符號短符號)參數)。 – Gruntcakes 2011-06-02 18:31:34
是的,但是當用UTF-8編碼時,您不會知道字符串中有多少個字符。 – cababunga 2011-06-02 18:42:34
UTF-8是1到4個字節,由於Unicode代碼點的範圍不需要,所以5和6字節編碼已被刪除。 – 2011-06-02 18:55:48