2012-12-20 49 views
0

可能重複:
C++ & Boost: encode/decode UTF-8C++相當於PHP的utf8_decode功能在Linux中

我需要一個wstring已UTF-8編碼的文本到它(錯誤地)到轉換其擁有新的更正的wstring。

PHP的ut8_decode函數完美地處理了這個問題。我也可以做到這一點通過的iconv:

來自:

# cat wtf | grep 1856 | awk '{print $2}' 
å°ç³å·ãçç¾ 

到:

#cat wtf | grep 1856 | awk '{print $2}'| iconv -f utf8 -t ISO-8859-1 
小石川 玉美 

在C#中我能得到這種行爲:

public static string Utf8Decode(string utf8me) { 
    return Encoding.UTF8.GetString(Encoding.GetEncoding(28591).GetBytes(utf8me)); 
} 

大多數我的搜索已經提出了特定於Windows的解決方法。由於我在Linux上,我假設我會使用iconv,但我不確定如何在C++中執行此操作。

+1

什麼'wstring'的類型? UCS-2? UTF-32? – Pubby

+0

'utf8_decode'將UTF-8編碼文本轉換爲ISO-8859-1編碼文本。 ISO-8859不能編碼字符「小石川玉美」。你有一個非常強大的編碼搞砸的例子! [每個程序員絕對肯定需要了解編碼和字符集以處理文本](http://kunststube.net/encoding/) – deceze

回答