我試圖將C++ std::string
轉換爲UTF-8或std::wstring
而不會丟失信息(請考慮包含非ASCII字符的字符串)。std :: string.c_str()使用什麼編碼?
根據http://forums.sun.com/thread.jspa?threadID=486770&forumID=31:
如果的std :: string具有非ASCII字符,您必須提供從您的編碼轉換爲UTF-8的功能[...]
std::string.c_str()
使用什麼編碼?如何以跨平臺的方式將其轉換爲UTF-8或std::wstring
?
所以基本上沒有辦法讓我轉換std :: string而不知道它的編碼提前?我問,因爲我正在編寫一個接受std :: string的API函數。我猜文檔需要指導用戶傳入什麼格式。 – Gili 2009-06-18 04:49:53
@Gili,對:您無法可靠地將未知編碼中的字節序列轉換爲UTF-8(或其他任何;-)。我建議你要求調用者提供UTF-8數據 - 大多數其他編碼不允許編碼任何可能的Unicode字符串。正如@Naaff所說,ASCII是UTF-8(和ISO-8859- *以及許多其他編碼)的特殊情況,所以如果這是您的情況,則不必擔心(文檔中的腳註提醒用戶注意這一事實可能會節省_them_擔心;-)。 – 2009-06-18 04:59:00