Записать строку Unicode в файл с помощью CodeGear C++ Builder 2009
Я только что перешел с Builder 6 на Builder 2009 и у меня есть вопрос.
Как я могу записать строку Unicode в файл?
TBytes Preamble1 = TEncoding::Unicode->GetPreamble();
UnicodeString str1("string1");
int len = TEncoding::Unicode->GetByteCount(str1);
FileWrite( iFile,&Preamble1[0],Preamble1.Length );
FileWrite( iFile,str1.c_str(),len );
Это то, что я делаю сейчас, но я думаю, что должен быть какой-то родной путь.
Кстати, можно ли получить Преамбулу один раз и предположить, что в течение времени жизни приложения она не меняется? Из доступной документации для UnicodeString кажется, что это всегда UTF-16 LE
1 ответ
Мой первый вопрос будет "Что за файл"?
Предполагая, что это текстовый файл, а не двоичный файл, какую кодировку вы хотите получить на выходе? UTF-8, как правило, хороший выбор, потому что он поддерживается такими вещами, как блокнот, и для обычных "латинских" символов нет накладных расходов.
Лично для написания "простых" текстовых файлов я просто добавляю строки в TStringList, а затем использую метод SaveToFile.
TStringList *list = new TStringList;
list->Add(str1);
list->Add(str2);
...
list->SaveToFile(filename, TEncoding::UTF8);