Запись в файл в Юникоде - PullRequest
6 голосов
/ 11 марта 2010

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

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

О моей системе: Я использую Windows. А моя IDE - это Visual Studio 2008.

Ответы [ 3 ]

8 голосов
/ 11 марта 2010

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

f = _wfopen(COMMON_FILE_PATH,L"w, ccs=UTF-16LE");
0 голосов
/ 11 марта 2010

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

Важно то, распознает ли C внутренние значения Unicode и правильно передает эти двоичные значения в файл.

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

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

0 голосов
/ 11 марта 2010

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

Редактировать: я тоже тестировал на cygwin - вроде бы тоже работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...