• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統計

            最新評論

            setlocale同mbstowcs函數的關系 --- 轉

            程序中,如果要將ASCII碼字符串轉換為寬字符(Unicode),可以利用標準C的mbstowcs函數。

            微軟在MSDN中有示例,如下:

             

            然而,這段代碼在處理含有漢字的字符串時就會出現問題。比如將:

            wchar_t *pwchello = L"Hi";  替換為wchar_t *pwchello = L"你好"; 

            查看運行結果就會發現,mbstowcs函數將漢字視作兩個ASCII字符,這樣一個漢字就變成了兩個wchar_t。原因是mbstowcs需要我們明確的告訴他要轉換的字符語言。這里需要使用setlocale函數。在網上發現不少人遇到這個問題,微軟的MSDN也是,為什么這里就不說明一下呢?

            只要在調用前,使用setlocale(LC_ALL, "chs")設置,結果就正常了。

            我測試在英文Vista操作系統內,Visual Studio 2008下setlocale(LC_ALL, "chs")可以執行成功。

            但是在Borland C++Builder 6、CodeGear RAD Studio 2009下執行都失敗,BCB提供的幫助文件內也未找到,反復測試使用setlocale(LC_ALL, "Chinese (Simplified)_People's Republic of China")可以奏效(這么大一個長串,BCB對搞中文編碼的程序員也夠狠)。

            更諷刺的是,在BCB內使用setlocale(LC_ALL, "jpn"),或"cht"都可以成功。唯獨就不支持"chs",對BCB的做法徹底無語了。我相信在大多數unix或linux上也還是支持"chs"的。如果有時間,我再搞一個MinGW試試看。

            另外如果程序運行在非中文操作系統內,使用setlocale修改運行時字符集環境,會影響當前應用程序的編碼方式,因此使用前需要保留一下老的編碼,使用后再恢復。

             

            for 在linux上coding的兄弟們,locale別名表大概在 /usr/lib/X11/locale/locale.alias

            posted on 2010-05-25 14:29 大龍 閱讀(2787) 評論(1)  編輯 收藏 引用

            評論

            # re: setlocale同mbstowcs函數的關系 --- 轉 2011-04-09 19:23 pointma

            太謝謝老大了!!!
            星期六不用加班加到通宵就是因為老大的這篇文章!!!

            叩頭!!!
            老大是好人!!
            (好人你妹啊!!!誰收你的好人卡啊!!)

              回復  更多評論   

            久久国产视屏| 日本久久久久久中文字幕| 久久九九有精品国产23百花影院| 亚洲伊人久久成综合人影院 | 久久er国产精品免费观看2| 99精品久久精品一区二区| 久久免费看黄a级毛片| 无码人妻少妇久久中文字幕蜜桃| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 成人久久免费网站| 日韩AV无码久久一区二区 | 91久久精品91久久性色| 国产韩国精品一区二区三区久久| 国产精品久久国产精品99盘 | 奇米影视7777久久精品人人爽| 怡红院日本一道日本久久 | 欧美日韩成人精品久久久免费看 | 久久久www免费人成精品| 久久天天躁夜夜躁狠狠躁2022| 少妇久久久久久久久久| 久久91综合国产91久久精品| a级毛片无码兔费真人久久| 亚洲国产精品无码久久久久久曰| 色妞色综合久久夜夜| 国产精品99久久精品爆乳| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲va久久久噜噜噜久久天堂 | 久久婷婷国产综合精品| 91久久成人免费| 亚洲精品蜜桃久久久久久| Xx性欧美肥妇精品久久久久久| 久久精品国产乱子伦| 久久97久久97精品免视看| 无码久久精品国产亚洲Av影片 | 狠狠精品干练久久久无码中文字幕 | 国产成人精品综合久久久| 精品国产91久久久久久久a| 久久精品国产亚洲77777| 亚洲欧美成人久久综合中文网 | 亚洲国产精久久久久久久| 7777久久久国产精品消防器材|