如何在c中打印utf-16字符

问题描述 投票:0回答:1
int main() 
{
    char c = 0x41;
    printf("char is : %c\n",c);

    c = 0xe9;
    printf("char is : %c\n",c);

    unsigned int d = 0x164e;
    printf("char is : %c\n",d);


    return 0;
}

我要打印的内容是:

enter image description here

我在 Windows 上使用 Ubuntu 64 位 VMware Workstation 并使用八进制转储:

enter image description here

utf-16 LE txt 文件中三个字符的十六进制值。

输出:

enter image description here

如何正确打印出utf-16字符?

c unicode utf-16
1个回答
0
投票

使用宽字符 (

wchar_t
) 和
wprintf
%lc
格式打印宽字符。

此外,设置区域设置以支持 Unicode:

setlocale(LC_ALL, "en_US.UTF-8")
.

还包括必要的标题:

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

这是一个代码示例:

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

int main() {
    // Set the locale to support wide characters
    setlocale(LC_ALL, "en_US.UTF-8");

    // Print a UTF-16 character (wide character)
    wchar_t utf16_char = L'😊';  // Smiley face emoji
    wprintf(L"UTF-16 character: %lc\n", utf16_char);

    // Print a UTF-16 string (wide string)
    wchar_t utf16_string[] = L"Hello, 世界! 😊";
    wprintf(L"UTF-16 string: %ls\n", utf16_string);

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.