визуальные функции файла Unicode с использованием переполнения стека

Я пытаюсь прочитать текстовый файл Unicode и записать данные обратно в текстовый файл. Вот код Чтение работает отлично. Я могу сказать, потому что это показывает ложный символ на консоли, но выходной текстовый файл пуст. Любая помощь будет оценена!

int main() {
wchar_t *filename=L"normal.txt";
FILE *infile;
infile=_wfopen(filename,L"r");
wchar_t  b[2];
fwscanf(infile,L"%ls",b);
wprintf(L"The string read was :%ls\n",b);//Read a character from the file
FILE *outfile;
wchar_t *filetwo = L"one.txt";
outfile=_wfopen(filetwo,L"w, ccs=UTF-16LE");
fwprintf(outfile,L"%ls",b);
fclose(outfile);
getch();
return 0;
}

Кроме того, мне нужно иметь дело со сценариями деванагари в частности. Сколько байт они берут? Если это 4, какие-либо подсказки о том, как бороться с теми, кто использует wchar_t потому что это только 2 байта в ширину.

4

Решение

Все кодовые точки деванагари находятся в BMP (у вас есть основной блок в U + 0900 и некоторые дополнительные в U + A8F0), поэтому, если текстовые файлы кодируются как UTF-16, все символы занимают только одно 16-битное слово каждый.
(Не думайте, что так будет всегда.)

3

Другие решения

Только отвечая на второй вопрос:

Символы сценария Деванагари находятся в Базовая многоязычная плоскость. Они все 16-битные, так что вы в безопасности. В противном случае вам придется связываться с суррогатные пары.

1

Нашел решение !!
Мне просто нужно было открыть файл в двоичном режиме. В противном случае некоторые символы игнорируются.
Спасибо огромное за помощь, ребята!

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector