У меня есть некоторые проблемы при записи в файл в 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.
Возможно, вам потребуется добавить кодировку в режим. Возможно это:
f = _wfopen(COMMON_FILE_PATH,L"w, ccs=UTF-16LE");
То же самое с fopen ()
у меня работает. Я использую Mac OS X, поэтому у меня нет _wfopen ()
; предполагая, что _wfopen ()
не возвращает вам плохих вещей, ваш код должен работать.
Edit: Я тоже тестировал cygwin - похоже, он тоже работает нормально.
Я не могу найти ссылку на _wfopen ни в одном из своих ящиков, однако я не понимаю, почему открытие его с помощью fopen должно вызывать проблемы, все, что вам нужно это указатель на файл.
Что имеет значение, так это то, распознает ли C внутренние значения Unicode и должным образом помещает эти двоичные значения в файл.
Попробуйте просто использовать команду fopen, как предложил Карл, она должна работать правильно.
Изменить: если это все еще не работает, вы можете попробовать определить символы как их целочисленные значения и нажать их с помощью fwprintf (), я знаю, что это громоздко и не очень хорошее решение в долгосрочной перспективе, но это тоже должно сработать. .