使用std :: string和UTF8似乎是一個相當複雜的問題,我找不到do和do的很好解釋。使用UTF8
如何正確使用C++中的UTF8?這相當混亂。
我發現boost::locale
和我設置全局區域設置:
std::locale::global(boost::locale::generator()(""));
然而,在此之後我需要什麼考慮,我什麼時候能拿到的問題?從文件寫入/讀取如預期的那樣工作,字符串比較等...?
到目前爲止,我知道下面的:
std::regex
/boost::regex
將無法正常工作,在需要covnert寬字符串和使用wregex。boost::algorithm::to_upper
將無法正常工作,需要使用boost::locale::to_upper
其他?
沒錯。在應用程序內部,不能使用UTF-8。 C++標準庫建立在假設一個編碼值=一個字符的基礎上。 –
那我該怎麼處理? wstring/UTF16不是一個編碼值=一個字符嗎? – ronag
@ Cheersandhth.-Alf:這個假設在UCS-4中也是不真實的。實際上,它在任何* Unicode編碼中都是不真實的。 – Fanael