Как писать файлы с (читаемыми) символами UTF8? - PullRequest
3 голосов
/ 17 февраля 2009

Я прочитал файл, содержащий utf8 символов, например:

FILE *FileIN,*FileOUT;
FileIN=fopen("filename","r");
char string[600];
WideChar C[600],S[100];
fgets(string,600,FileIN);
wcscpy(C,UTF8Decode(string).c_bstr()); // widechar copy

И он отлично читает (это отображается в окне редактирования при запуске программы):

Edit1->Text=C;

Result ===> "3021";"亜";"7";"ア アシア つ.ぐ T1 や つぎ つぐ"

Дело в том, что когда я хочу записать это в файл:

FileOUT=fopen("txt.txt","w");    
fwrite(Edit8->Text.c_str(),strlen(Edit8->Text.c_str()),1,FileOUT);

Result ===> "3021";"?";"7";"? ??? ?.? T1 ? ?? ??"

Вопрос в том, как записать результат (тот, который я вижу в запущенной программе) в файл?

Я использую язык C в CodeGear C ++ Builder

Решено спасибо Кристофу и Нобугзу за помощь

Я изменил эту строку

fwrite(Edit8->Text.c_str(),strlen(Edit8->Text.c_str()),1,FileOUT);

к этому, и это сработало. Спасибо

fwrite(UTF8Encode(Edit8->Text).c_str(),UTF8Encode(Edit8->Text).Length(),1,FileOUT);

1 Ответ

2 голосов
/ 17 февраля 2009

Я не знаю фреймворк, но если вы используете UTF8Decode() после прочтения файла, разве вы не должны использовать UTF8Encode() перед записью?

...