.Net XmlWriter - неожиданное кодирование смущает меня

С man-страницы:

Функция creat () должна вести себя так, как если бы она была реализована следующим образом:

int creat(const char *path, mode_t mode)
{
    return open(path, O_WRONLY|O_CREAT|O_TRUNC, mode);
}
blockquote>

Итак, файл открыт в режиме только для записи, и поэтому вы не можете читать.

Если вам нужно читать и писать, используйте open(...) непосредственно с O_RDWR вместо O_WRONLY.

Указанное вами 0666 просто указывает права доступа к файловой системе, с которой создается файл.

Если вы хотите просто выполнить обычный файловый ввод / вывод, вы также можете использовать высокоуровневые API, такие как fopen .

8
задан Bob Moore 16 December 2008 в 16:58
поделиться

2 ответа

Я подозреваю, что это - потому что это пишет в StringBuilder, который является по сути UTF-16. Альтернатива для обхода этого должна создать класс, полученный из StringWriter, но который переопределяет свойство Encoding.

Я полагаю, что имею один в MiscUtil - но это довольно тривиально для записи так или иначе. Что-то вроде этого:

public sealed class StringWriterWithEncoding : StringWriter
{
    private readonly Encoding encoding;

    public StringWriterWithEncoding (Encoding encoding)
    {
        this.encoding = encoding;
    }

    public override Encoding Encoding
    {
        get { return encoding; }
    }
}
15
ответ дан 5 December 2019 в 10:05
поделиться

A. Сетевая Строка кодируется в Unicode (UTF-16). Я ожидаю, что это - источник Ваших проблем кодирования, потому что Вы пишете в StringBuilder.

2
ответ дан 5 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: