#include "boost/locale.hpp"
#include "iostream"
#include "string"
int main()
//也列印出東西,但是認為zhang...變數是個整數,而不是字串
std::cout << "output cout : zhang_ucs16_5f20 = " << zhang_ucs16_5f20 << std::endl;
if (!std::cout)
//失敗了,而且流壞掉了,需要clear復位。
//因為流wcout需要把usc16轉為本地的ansi字符集。而取本地ansi字元編碼的時,發現c現場中沒說明
//因此wcout就無法做unicode->gbk的轉換,就失敗了。
std::wcout<< l"output wcout : zhang_ucs16_5f20 = " << zhang_ucs16_5f20 << std::endl;
if (!std::wcout)
//成功了!wcout居然接收string引數
std::wcout<< l"output wcout : zhang_gbk_d5c5 = " << zhang_gbk_d5c5 << std::endl;
if (!std::wcout)
std::cout << "使用本地ansi現場列印:" << std::endl;
//""字串代表本地作業系統預設的現場,一般是chinese_republic of china.936
std::locale loc( std::locale(),"",std::locale::ctype );
std::cout.imbue(loc);
std::wcout.imbue(loc);
//仍舊成功
std::cout << "output cout : zhang_gbk_d5c5 = " << zhang_gbk_d5c5 << std::endl;
if (!std::cout)
//仍舊失敗。看來cout不受locale.ctype影響
std::cout << "output cout : zhang_ucs16_5f20 = " << zhang_ucs16_5f20 << std::endl;
if (!std::cout)
//成功了。wcout可以根據當前locale.ctype資訊,知道把unicode轉gbk
std::wcout<< l"output wcout : zhang_ucs16_5f20 = " << zhang_ucs16_5f20 << std::endl;
if (!std::wcout)
//這次卻失敗了,但是流沒壞掉。這個行為與wcout的行為有關,估計是用都d5cd去做轉碼,轉失敗了。
std::wcout<< l"output wcout : zhang_gbk_d5c5 = " << zhang_gbk_d5c5 << std::endl;
if (!std::wcout)
system("pause");
return 0;
}
關於 wcout 輸出中文的問題
1.cout 場景1 在原始檔中定義 const char str 中文 在 vc 編譯器上,由於windows環境用 gbk編碼,所以字串 中文 被儲存為 gbk內碼,編譯器也把 str 指向乙個包含有 gbk編碼的唯讀記憶體空間 因為是const 用 cout 輸出 str 時,由於中文wind...
Python筆記 輸出中文的方法(字元編碼)
說實話,要搞懂python中字元編碼的所有問題,一定得在實戰中積累經驗才行!在此文章中,我用例項來分析並解決我們經常會遇到的一些問題,我的ide環境為pycharm。coding gbk a 宙斯 aa a.decode gbk print aa 輸出結果為中文 宙斯 在後面的示例中不再特別說明 示...
中文分詞jieba學習筆記
四 詞性標註 五 並行分詞 六 返回詞語在原文的起止位置 注意 hmm模型 隱馬爾可夫模型 可以識別新詞 jieba.load userdict filename filename為自定義詞典的路徑 在使用的時候,詞典的格式和jieba分詞器本身的分詞器中的詞典格式必須保持一致,乙個詞佔一行,每一行...