我想让我的 C 程序从其他字符集中打印符号,而不是从 ASCII 表中打印,因为它是默认的。例如,我想从 ISO-8859 字符集中打印 [200,250] 范围内的字符。有可能吗?编译器应该如何设置?提前感谢您的帮助!
问问题
367 次
2 回答
2
设置您的语言环境并使用宽字符:
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
setlocale(LC_CTYPE, "");
for (wchar_t c = 200; c < 250; c++)
{
wprintf(L"%lc", c);
}
wprintf(L"\n");
return 0;
}
输出:
ÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øù
于 2019-10-21T17:09:18.707 回答
0
事实上,C 函数并不关心编码,所以如果你有这样的代码:
#include <stdio.h>
int main( void )
{
printf( "Hällo Wörld\n" );
return( 0 );
}
它将完全按照 C 源文件的编码打印出 'germanzied' "Hello World",与系统设置等无关。当然,如果您打印从文件中读取的字符串,情况也是如此。如果您想重新编码字符串(例如从 UTF-8 到 ISO-8859),您必须手动执行或搜索适当的库
于 2019-10-21T17:05:24.363 回答