如何用(可读)UTF8字符编写文件?

时间:2009-02-17 15:39:00

标签: c utf-8 c++builder

我读了一个像这样的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 ? ?? ??"

问题是,如何在文件中编写结果(我可以在程序运行中看到的那个)?

我在CodeGear C ++ Builder上使用C语言

解决 感谢Christoph和nobugz的帮助

我改变了这一行

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 个答案:

答案 0 :(得分:2)

我不知道框架,但如果您在阅读文件后使用UTF8Decode(),那么在写作之前不应该使用UTF8Encode()吗?