關於Visual C++ 2008中wprintf和wprintf_s輸出中文亂碼問題
最近寫編碼轉換庫,發現MB編碼轉換成 Unicode 後,中文總是亂碼。
起初以為是自己寫錯了,但測試後發現轉換結果是完全正確的。
再測試一下,發現居然連常字串都不能正常輸出……
CharWucs2s[] =
L"我fsf我safas";
wprintf(L"%s\r\n",ucs2s);
輸出結果:?fsf?safas
帶著疑問開啟MSDN,發現原來
printf 函式有N個版本……
其中 Unicode 版本的如下
intwprintf_s(
const wchar_t *format [,argument]... );
int_wprintf_s_l(
const wchar_t *format, locale_tlocale [,
argument]... );
這兩個函式有什麼區別呢?locale_t locale?
不錯,問題就在這裡了。原來這個引數描述的是“本地語言”,也就是程式本地化的意思。輸出前通常要通過這個引數設定輸出文字的語言區域,例如中文。
說簡單點,也就是微軟為了實現本地化而加入的改動。
解決方法如下:
1、加入標頭檔案
#include <Locale.h>
2、呼叫函式
_wsetlocale 或 setlocale 設定要使用的本地語言。如:
_wsetlocale(LC_ALL,L"chs");
或者
setlocale(LC_ALL,"chs");
此外,網上說
locale 對 prinft 和
printf_s 沒有影響,這個似乎是如此。
但我在MSDN裡看到的幾乎對所有的 printf、atoi、atof 等字串操作函式都有影響。。。
setlocale的具體用法參照:http://blog.csdn.net/whatday/article/details/9734781
setlocale的具體用法參照:http://blog.csdn.net/whatday/article/details/9734781
相關文章
- BIP輸出PDF中文亂碼問題
- StreamWriter輸出中文亂碼的問題 (轉)
- 關於中文亂碼問題(總結)
- oracle 輸出中文亂碼問題解決方案Oracle
- Java IO輸入輸出及亂碼問題Java
- cat 輸出亂碼問題解決
- 解決plsql中中文亂碼問題SQL
- [Visual studio code 常見問題解決] ——中文亂碼、
- C++ cout列印輸出 (解決輸出亂碼)C++
- EasyUI 中文亂碼問題UI
- MSSQL中文亂碼問題SQL
- Java 中文 亂碼問題Java
- java中解決request中文亂碼問題Java
- jsp頁面中中文亂碼問題JS
- ofbiz中mysql的中文亂碼問題!MySql
- 解決tomcat啟動控制檯輸出中文亂碼問題-ideaTomcatIdea
- SpringMVC中文亂碼問題SpringMVC
- Python中文亂碼問題Python
- Cookie值中文亂碼問題Cookie
- 解決中文亂碼問題
- 【SSM】WEB專案中的中文亂碼問題SSMWeb
- Mysql輸出中文顯示亂碼處理MySql
- Windows 8.1中文版系統使用中文軟體出現亂碼問題Windows
- Python BeautifulSoup中文亂碼問題Python
- MySql中文亂碼問題解決MySql
- Jmeter 解決中文亂碼問題JMeter
- Java 解決中文亂碼問題Java
- RDSSQLSERVER解決中文亂碼問題SQLServer
- 解決MySQL中文亂碼問題MySql
- ubuntu 中文顯示亂碼問題Ubuntu
- Java,MySQL中文亂碼問題求教JavaMySql
- java處理中文亂碼問題Java
- vscode中文亂碼問題VSCode
- URL地址中的中文亂碼問題的解決
- 解決URL請求中的中文亂碼問題
- 解決PHP匯出CSV檔案中文亂碼問題PHP
- Robotframework-ride 日誌輸出中文亂碼FrameworkIDE
- 關於在LINUX下部署出現亂碼問題如何解決?Linux