Запись в файл в Unicode

У меня есть некоторые проблемы при записи в файл в unicode в моей c программе. Я пытаюсь записать unicode японскую строку в файл. Когда я иду для проверки файла, хотя это пусто. Если я пробую строку non-unicode, она работает просто великолепно. Что я делаю неправильно?

setlocale(LC_CTYPE, "");
FILE* f;
f = _wfopen(COMMON_FILE_PATH,L"w");
fwprintf(f,L"日本語");
fclose(f);

О, о моей системе: Я запускаю Windows. И моим IDE является Visual Studio 2008.

6
задан sth 11 March 2010 в 18:06
поделиться

3 ответа

Возможно, вам потребуется добавить кодировку в режим. Возможно это:

f = _wfopen(COMMON_FILE_PATH,L"w, ccs=UTF-16LE");
8
ответ дан 16 December 2019 в 21:38
поделиться

То же самое с fopen () у меня работает. Я использую Mac OS X, поэтому у меня нет _wfopen () ; предполагая, что _wfopen () не возвращает вам плохих вещей, ваш код должен работать.

Edit: Я тоже тестировал cygwin - похоже, он тоже работает нормально.

0
ответ дан 16 December 2019 в 21:38
поделиться

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

Что имеет значение, так это то, распознает ли C внутренние значения Unicode и должным образом помещает эти двоичные значения в файл.

Попробуйте просто использовать команду fopen, как предложил Карл, она должна работать правильно.

Изменить: если это все еще не работает, вы можете попробовать определить символы как их целочисленные значения и нажать их с помощью fwprintf (), я знаю, что это громоздко и не очень хорошее решение в долгосрочной перспективе, но это тоже должно сработать. .

0
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: