char与wchar

打印 wchar_t 类型的字符:

由于 wchar_t 类型涉及到多字节编码,可以使用宽字符输出函数来打印 wchar_t 类型的字符,例如 wprintf 或 putwchar。
以 UTF-8 编码为例,可以使用 wprintf 函数打印一个 wchar_t 类型的字符:
于 wchar_t 类型的字符,在打印之前需要调用 setlocale 函数来设置本地化环境,以确保宽字符输出函数能够正常工作。

#include 
#include 
#include 
#include 
#include 


void printUnicodeHexString(const wchar_t* unicodeStr) {
    for (int i = 0; unicodeStr[i] != L'\0'; i++) {
        printf("%04x ", (unsigned int)unicodeStr[i]);
    }
    printf("\n");
}

int main()
{
   setlocale(LC_ALL, "");  // 设置本地化环境

    char input[] = "你好";
    printf("              :  %s\n",input);

    wchar_t *output;
    int charCount = strlen(input) + 1; // 包括终止符 '\0'
    int wcharCount = mbstowcs(NULL, input, 0); // 获取转换后的 wchar_t 数组的元素个数

    //wchar_t *output = malloc(wcharCount * sizeof(wchar_t)); // 分配存储空间
    output = malloc(wcharCount * sizeof(wchar_t)); // 分配存储空间
    mbstowcs(output, input, charCount); // 进行转换

    wprintf(L">L:%ls\n", output); // 打印转换后的字符数组
    printUnicodeHexString(output);
    free(output); // 释放内存

    return 0;
}

以上代码问题Linux c中printf 和 wprintf 不能同时使用。
printf 函数是用于在标准输出流上输出格式化字符串的函数,它不直接支持打印宽字符 (wchar_t) 字符串。对于打印宽字符字符串,你需要使用 wprintf 函数。
链接: 在线中文转Unicode

你可能感兴趣的:(c语言)