2009-06-18 52 views

回答

35

std::string本身不使用編碼 - 它會返回您放入的字節。例如,這些字節可能使用ISO-8859-1編碼......或者其他的,真的:有關編碼的信息不存在 - 您必須知道字節來自哪裏!

+0

所以基本上沒有辦法讓我轉換std :: string而不知道它的編碼提前?我問,因爲我正在編寫一個接受std :: string的API函數。我猜文檔需要指導用戶傳入什麼格式。 – Gili 2009-06-18 04:49:53

+3

@Gili,對:您無法可靠地將未知編碼中的字節序列轉換爲UTF-8(或其他任何;-)。我建議你要求調用者提供UTF-8數據 - 大多數其他編碼不允許編碼任何可能的Unicode字符串。正如@Naaff所說,ASCII是UTF-8(和ISO-8859- *以及許多其他編碼)的​​特殊情況,所以如果這是您的情況,則不必擔心(文檔中的腳註提醒用戶注意這一事實可能會節省_them_擔心;-)。 – 2009-06-18 04:59:00

7

std::string包含任何字節序列,所以編碼由您決定。你必須知道它是如何編碼的。但是,如果您不知道這是別的,那可能只是ASCII。在這種情況下,它已經與UTF-8兼容。