關於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
相關文章
- JDK 18 及以上使用標準輸出流中文輸出亂碼問題JDK
- cat 輸出亂碼問題解決
- Java IO輸入輸出及亂碼問題Java
- VSCode 輸出欄中文亂碼VSCode
- 解決tomcat啟動控制檯輸出中文亂碼問題-ideaTomcatIdea
- C++ cout列印輸出 (解決輸出亂碼)C++
- vscode中文亂碼問題VSCode
- EasyUI 中文亂碼問題UI
- 解決中文亂碼問題
- Python BeautifulSoup中文亂碼問題Python
- 關於本地GB2312編碼的檔案上傳github後 中文出現亂碼的問題Github
- Robotframework-ride 日誌輸出中文亂碼FrameworkIDE
- Mysql輸出中文顯示亂碼處理MySql
- confluence中文顯示亂碼問題
- springmvc 解決中文亂碼問題SpringMVC
- MySql中文亂碼問題解決MySql
- Jmeter 解決中文亂碼問題JMeter
- Java GBK 中文亂碼問題分析Java
- jxl匯出中文標題亂碼
- 解決PHP匯出CSV檔案中文亂碼問題PHP
- IDEA控制檯輸出中文亂碼解決方法Idea
- python爬取中文輸出亂碼怎麼辦Python
- Java Web開發中文亂碼問題JavaWeb
- js解決url中文亂碼問題JS
- 徹底搞懂 python 中文亂碼問題Python
- python查詢mysql中文亂碼問題PythonMySql
- 解決plsql中中文亂碼問題SQL
- idea控制檯中文亂碼的問題Idea
- 【學習筆記】關於Freemark程式碼輸出值的問題筆記
- [20190603]關於dbms_output輸出問題.txt
- 關於idea開發遇到javascript動態新增html元素時中文亂碼的問題IdeaJavaScriptHTML
- vscode中文亂碼怎麼解決 vscode輸出亂碼怎麼解決VSCode
- phantomjs截圖中文亂碼問題解決JS
- 如何解決PuTTY中文亂碼的問題
- CentOS8中文亂碼問題CentOS
- linux系統編碼問題:vi不能輸入中文,ssh遠端連線終端不能輸入中文,中文顯示亂碼等Linux
- Mysqldump匯出亂碼問題排查MySql
- 微信公眾號傳送模板訊息,出現亂碼問題---字元中文編碼問題字元
- 關於tomcat在idea上的中文編碼問題TomcatIdea