Сценарий
У вас есть много файлов XML, хранящихся в формате UTF-16 в базе данных или на сервере, где пространство не является проблемой. Вам нужно взять большую часть этих файлов, которые вам нужны для передачи в другие системы, в виде файлов XML, и очень важно, чтобы вы использовали как можно меньше места.
Выпуск
В действительности только около 10% файлов, хранящихся в формате UTF-16, должны храниться в формате UTF-16, остальные могут безопасно храниться в формате UTF-8 и все будет в порядке. Если у нас могут быть те, которые должны быть UTF-16, а остальные UTF-8, мы можем использовать примерно на 40% меньше места в файловой системе.
Мы пытались использовать отличное сжатие данных, и это полезно, но мы обнаружили, что мы получаем тот же коэффициент сжатия с UTF-8, что и с UTF-16, а также с более быстрым сжатием UTF-8. Поэтому, в конце концов, если как можно больше данных хранится в формате UTF-8, мы можем не только сэкономить пространство при хранении в несжатом виде, мы все равно можем сэкономить больше места, даже когда оно сжато, и мы можем даже сэкономить время с помощью самого сжатия. .
Цель
Чтобы выяснить, когда в файле XML есть символы Unicode, для которых требуется UTF-16, поэтому мы можем использовать UTF-16 только тогда, когда это необходимо.
Некоторые подробности о XML-файле и данных
Хотя мы контролируем схему для самого XML, мы не контролируем, какой тип «строк» может входить в значения с точки зрения Unicode, поскольку источник может предоставить данные Unicode для использования. Однако это редко, поэтому мы не хотели бы использовать UTF-16 каждый раз только для поддержки чего-то, что требуется только в 10% случаев.
Среда разработки
Мы используем C # с .Net Framework 4.0.
РЕДАКТИРОВАТЬ: Решение
Решением является просто использование UTF-8.
Вопрос был основан на моем неправильном понимании UTF, и я благодарен всем, кто помог мне разобраться. Спасибо!