Как я могу хранить Unicode в C? - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь сохранить кодовую точку Unicode внутри переменной в C. Я пытался использовать wchar_t, однако, поскольку кодовая точка Unicode, которую я пытаюсь сохранить, это U + 1F319, она не помещается в wchar_t.Как я могу обойти это?Я использую компьютер Windows.

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

int main(void){

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

    unsigned long long x = 0x1F319;
    wchar_t wc =L'\U0001f319';
    wprintf(L"%lc",wc);

    return EXIT_SUCCESS;
}

Следующий код выдает эту ошибку:

Unicode.c: 12: 14: предупреждение: символьная константа слишком длинная для ее типа
wchar_t wc = L '\ U0001f319';

1 Ответ

0 голосов
/ 15 декабря 2018

Как я могу хранить Unicode в C?

Начиная с C11, "для хранения кодовой точки Unicode", используйте char32_t @ Shawn

#include <uchar.h>

char32_t ch1 = 0x1F319;
char32_t ch2 = U'\U0001f319';

Работает на моем компьютере с Windows. ref


char32_t

, который представляет собой целочисленный тип без знака, используемый для 32-разрядных символов, и тот же тип, что и uint_least32_t... C11 §7.27 2

...