2014-01-10 5 views
0

Я пытаюсь преобразовать строку какПреобразовать строку в utf8 строку

<Root>á</Root> 

К это UTF строковое представление, как этот

<Root>á</Root> 

(Взято из этой страницы: http://www.cafewebmaster.com/online_tools/utf8_encode)

Но когда я выдаю Encoding.UTF8.GetBytes (str), я получаю массив байтов utf.

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

-

Спасибо за указание, что нет строкового представления строки utf8.

Просто чтобы прояснить мои потребности, я должен выполнить что-то вроде этого в SQL Server 2008:

xmlAuditoria_Alta 
' 
<Out>utf8 char: á</Out> 
' 

Это единственный способ, которым я нашел до сих пор, чтобы эта хранимая precedure правильно сохранить значение

utf8 char: á 

Вот почему я пытаюсь преобразовать из á в á

Может быть, есть более правильный способ сделать это

+2

Там нет такого понятия, как «строковое представление UTF». 'á' - это то, что происходит, когда вы неправильно разбираете байты UTF8 в виде однобайтовой кодировки. Вы не должны этого делать. – SLaks

+0

Пожалуйста, используйте надлежащий API для работы с XML ... –

+0

Для чего стоит, взяв за чистую монету, ответ на ваш вопрос: 'Encoding _1252 = new Encoding (1252); // или что-то однобайтное кодирование, которое вы хотите byte [] utf8 = Encoding.UTF8.GetBytes (str); string mangledStr = _1252.GetString (utf8); ' Но я уверен, что вы никогда не хотите этого делать! –

ответ

8

Ваш вопрос основан на ошибочном посылке.

<Root>á</Root> 

не является представлением вашей строки в формате UTF-8. Фактически эта строка представляет собой байты UTF-8, повторно интерпретированные в некоторых других однобайтовых 8-битных набора символов.

Если вы хотите, чтобы преобразовать C# строку в UTF-8, то вы на самом деле пишут:

Encoding.UTF8.GetBytes(str) 
+0

+1. Также кодировка по умолчанию для XML - это уже UTF-8, поэтому есть хорошая вероятность, что простое сохранение XML-потока приведет к ожидаемому результату (вместо прямого манипулирования строк). –

Смежные вопросы