Могу ли я добавить содержимое, отличное от UTF-8, в файл .net resx?

Я использую файлы resx для хранения локализованного контента для некоторых веб-приложений. Меня попросили написать тестовый механизм, чтобы узнать, имеют ли эти файлы ресурсов содержимое, отличное от UTF-8, в значениях.

Файлы resx представляют собой файлы XML, в заголовке которых указано, что они закодированы в кодировке UTF-8. Итак, мой вопрос (может быть, очевидный или глупый): может ли кто-нибудь добавить строки, отличные от UTF-8, в значения файла ресурсов?

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

РЕДАКТИРОВАТЬ Просто для уточнения, тест должен выполняться в локализованном приложении, и если строка не является допустимой UTF-8, тогда отображается значение по умолчанию (локализованное)


person pollirrata    schedule 09.04.2013    source источник


Ответы (1)


В какой-то степени да. Вы можете без труда хранить обычный текст ASCII.

За пределами этого? Лучше всего написать для него тест. Определите некоторые строки, отличные от UTF8, в своем коде, сохраните их в файле .resx (для простоты используйте ResxRescourceWriter) и извлеките их обратно. Выведите их на экран и посмотрите, совпадают ли они.

Конечно, также возможно изменить кодировку файла resx. Если вы это сделаете, вы сможете хранить строки, закодированные в этом формате.

Лучше всего попробовать и посмотреть, что произойдет.

Изменить: на основе пояснений в комментарии.

Если вам нужно проверить существующие значения, лучше всего, вероятно, перебрать файлы resx, сделав дамп всего их текста в файл .txt.

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

person Jeff    schedule 09.04.2013
comment
Дело в том, что у меня есть 3000 файлов resx в этих приложениях (не спрашивайте почему, я был там до того, как прикоснулся к коду: P). Итак, что нужно знать, так это то, что когда я пытаюсь загрузить некоторые данные любого из этих тысяч файлов (при локализации), убедитесь, что строка является допустимым значением UTF-8. - person pollirrata; 10.04.2013
comment
@pollirrata: обновил мой ответ на основе вашего комментария. - person Jeff; 10.04.2013
comment
Обычный ASCII является действительным кодом UTF-8. - person Keith Thompson; 10.04.2013
comment
Я отредактировал свой вопрос для уточнения, так как не хочу делать это вручную. - person pollirrata; 10.04.2013
comment
@KeithThompson: я знаю. Я предполагаю, что «ирония в щеку» плохо переводится в текст. Возможно, мне следовало закодировать его в UTF-16? - person Jeff; 10.04.2013