在 Windows 10 的 C 程式中,我應該在螢屏上列印單詞 TYCHê,但我無法列印字母 ê(十六進制代碼:\xCA):
#include <stdlib.h>
#include <stdio.h>
char *Word;
int main(int argc, char* argv[]){
Word = "TYCH\xCA";
printf("%s", Word);
}
怎么了?
uj5u.com熱心網友回復:
Windows 在列印 Unicode 文本時很痛苦,但以下內容應該適用于所有現代 Windows 系統(Windows 10 或更高版本)上的所有現代編譯器(MSVC 19 或更高版本,g 9 或更高版本),在 Windows 控制臺和 Windows 中終端:
#include <iostream>
#include <windows.h>
int main()
{
SetConsoleOutputCP( CP_UTF8 );
std::cout << "TYCHê" << "\n";
}
確保您的編譯器將 UTF-8 作為輸入字符集。對于 MSVC 19,您需要一個標志。我認為這是以后版本的默認設定,但我不確定這一點:
cl /EHsc /W4 /Ox /std:c 17 /utf-8 example.cpp
g -Wall -Wextra -pedantic-errors -O3 -std=c 17 example.cpp
編輯: Dangit,我又誤讀了語言標簽。:-(
這里有一些C:
#include <stdio.h>
#include <windows.h>
int main()
{
SetConsoleOutputCP( CP_UTF8 );
printf( "%s\n", "TYCHê" );
return 0;
}
uj5u.com熱心網友回復:
你可以試試這條線
printf("%s%c", Word, 0x2580 82);
這可以列印你的ê。我使用 CLion 來解決它,在另一個 IDE 上它可能不會給出相同的結果。
uj5u.com熱心網友回復:
在 Windows 命令列中,您應該選擇代碼頁 65001:
CHCP 65001
如果您想直接從源代碼靜默執行此操作:
system("CHCP 65001 > NUL");
在 C 源代碼中,您應該使用<locale.h>標準頭檔案。
#include <locale.h>
在程式執行開始時,您可以撰寫:
setlocale(LC_ALL, "");
空字串""初始化為底層系統的默認編碼(您之前選擇為 Unicode)。
但是,我的這個答案只是一個補丁,而不是解決方案。
它最多可以幫助您列印法語字符。
在 Windows 命令列中處理編碼并不直接。
例如,參見:命令列和 UTF-8 問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417138.html
標籤:
下一篇:printf浮點數錯誤
