Записать CSV-файлы с помощью Byte Order Mark (BOM), используя c ++? - PullRequest
2 голосов
/ 17 ноября 2011

Я пытаюсь создать CSV-файл с UTF8 с BOM с использованием C ++. Кто-нибудь может мне помочь, как это сделать?

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011

Просто поместите спецификацию в строку и запишите ее в свой файл (используя любой используемый метод, например, streams или classic cstdio):

const char *bom = "\xef\xbb\xbf"; // UTF-8
const char *bom_alt = {0xef, 0xbb, 0xbf, 0}; // the null termination is optional, depending on how you write it later on

Тогда вам просто нужно убедиться, что вы действительно пишете правильный UTF-8, а не ANSI или широкие строки символов. Я бы порекомендовал UTF8-CPP для этого (он уже использовался в рабочих проектах и ​​отлично работает без использования огромной библиотеки, такой как Boost).

1 голос
/ 17 ноября 2011

Если вы используете библиотеку Qt, вы можете использовать QTextStream::setGenerateByteOrderMark(bool) для добавления спецификации.

...