2

我想让我的 C 程序从其他字符集中打印符号,而不是从 ASCII 表中打印,因为它是默认的。例如,我想从 ISO-8859 字符集中打印 [200,250] 范围内的字符。有可能吗?编译器应该如何设置?提前感谢您的帮助!

4

2 回答 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 回答