То, что делает “платформу.NET, использует стандарт кодировки UTF-16, по умолчанию” средний?

Ваше устройство отладки и компьютер должны быть подключены к одному и тому же WiFi.

17
задан J M 23 March 2009 в 23:44
поделиться

5 ответов

“UTF-16” является раздражающим термином, поскольку он имеет два значения, которые легко перепутаны.

Первое значение является серией 16-разрядных кодовых точек. Большинство из них соответствует непосредственно символу Unicode того же числа; символы вне Основной Многоязычной Плоскости (U+10000 вверх) хранятся как две 16-разрядных кодовых точки, каждый из Суррогатов.

Много языков используют UTF-16 в этом смысле в целях внутренней памяти, включая как собственный строковый тип. Это - обычный источник фраз как “.NET (или Java) использует UTF-16 в качестве его кодировки по умолчанию”..NET получает доступ к элементам такой строки UTF-16 16 битов за один раз (т.е., на уровне реализации, как uint16).

Следующей вещью рассмотреть является кодирование такой строки UTF-16 в линейные байты для устройства хранения данных в файле или сетевом потоке. Как всегда при хранении большего числа в байты существует две возможных кодировки: или обратный порядок байтов с прямым порядком байтов. Таким образом, можно использовать “UTF-16LE”, кодирование с прямым порядком байтов UTF-16 в байты, или “UTF-16BE”, кодирование с обратным порядком байтов.

(“UTF-16LE” является более наиболее часто используемым. Только для добавления большего количества беспорядка к провокационным сообщениям Windows дает ему очень вводящее в заблуждение и неоднозначное имя кодирования “Unicode”. В действительности почти всегда лучше использовать UTF-8 для хранилища файлов и сетевых потоков, чем любой из UTF-16LE/BE.)

Но если Вы не знаете, содержит ли набор байтов “UTF-16LE” или “UTF-16BE”, можно использовать прием рассмотрения первой кодовой точки для разработки его. Эта кодовая точка, Порядок байтов Mark (BOM), только допустима, когда считано один путь вокруг, таким образом, Вы не можете перепутать кодирование того для другого.

Этот подход, не заботы, какой порядок байтов Вы имеете только использование BOM для передачи сигналов о нем, обычно упоминается под именем кодирования... “UTF-16”.

Так, когда кто-то говорит “UTF-16”, Вы не можете сказать, имеют ли в виду они последовательность коротких целых кодовых точек Unicode или последовательность байтов в неуказанном порядке, который будет декодировать одному.

(“UTF-32” имеет ту же проблему.)

Если Вы не знаете, что, кодируя для использования при создании файла не указывайте один, и.NET будет использовать UTF16

Если это - фактическая прямая кавычка, это - ложь. Построение StreamWriter без аргумента кодирования явно указано, чтобы дать Вам UTF-8.

37
ответ дан 30 November 2019 в 10:19
поделиться

Протестируйте его. Запишите строку "abcd" в файл. Если это будет использовать UTF8, то файл будет иметь размер 4 байтов. Под UTF16 это будут 8 байтов. (плюс, возможно, BOM)

3
ответ дан 30 November 2019 в 10:19
поделиться

UTF16 является кодировкой по умолчанию, которую.NET будет использовать для кодирования строк в программе (как строковые переменные).

2
ответ дан 30 November 2019 в 10:19
поделиться

У меня была эта проблема со статическим классом System.IO.File .

Я хотел записать в файл строку, содержащую XML UTF-16.

Сначала я использовал

using(StreamWriter writer = File.CreateText(xmlFilePathTarget))
{
    writer.Write(xmlString);
}

Но поскольку он записал строку как UTF-8, IE не открывал ее и отображал ошибку:

Невозможно отобразить страницу XML Невозможно просмотреть ввод XML с помощью таблица стилей . Исправьте ошибку и затем нажмите кнопку "Обновить" или попробуйте еще раз позже.


Переключиться с текущей кодировки на указанная кодировка не поддерживается. Ошибка обработки ресурса 'file: /// C: / Documents and Setti ...

Спасибо В основном для этой статьи я обнаружил, что решение заключалось в явном использовании конструктора StreamWriter :

StreamWriter writer = new StreamWriter(xmlFilePathTarget, false, Encoding.Unicode));
2
ответ дан 30 November 2019 в 10:19
поделиться
Другие вопросы по тегам:

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