C 語言 - Unicode 解決中文問題


問題:

打印一句中文

#include <stdio.h>

int main()
{
	char str[] = "你好,世界";
	printf("%s\n", str);

	return 0;
}

運行結果

接下來打印這句中文中的“好”字

#include <stdio.h>

int main()
{
	char str[] = "你好,世界";
	printf("%c\n", str[1]);

	return 0;
}

運行結果

它打印出來的是問號

原因:

char 類型是為 ascii 定義的,每個字符為 1 個字節,而中文占兩個字節

解決方案:

使用 Unicode 編碼

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main()
{
	wchar_t str[] = L"你好,世界";  // 使用 wchar_t 定義 Unicode 編碼的字符類型,L 表示每個字符為兩個字節

	setlocale(LC_ALL, "Chs");  // 設置語言環境為簡體中文

	wprintf(L"%lc\n", str[1]);  // 這里要用 L 和 l

	return 0;
}

運行結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM