закодировать строку в utf8

Как можно легко закодировать строку в utf8 с помощью .NET (VB или C #)? Например, мне нужно закодировать строку типа «Это (есть) моя строка», результатом должна быть строка «Это +% 28is% 29 + моя + строка».

TIA

JP


person JP.    schedule 11.12.2009    source источник
comment
Это не кодировка utf-8. Вы имеете в виду urlencoding.   -  person troelskn    schedule 11.12.2009


Ответы (2)


Это кодировка URL, а не кодировка UTF8. Попробуйте этот метод:

HttpUtility.UrlEncode(value)
person David M    schedule 11.12.2009
comment
Спасибо, но в моем примере этот метод возвращает: This + (is) + my + string Кажется, он не заменяет (и) символы. - person JP.; 11.12.2009
comment
Зачем тебе это нужно? На чем вы основываете свое решение относительно того, какие персонажи сбегут, а какие нет? - person David M; 11.12.2009
comment
Вот как это указано моим клиентом, см. Мой комментарий ниже. - person JP.; 11.12.2009
comment
Кодирование формы HTML, согласно спецификации HTML, является кодировкой URL. Это относится к RFC 1738 (ietf.org/rfc/rfc1738.txt), который заявляет, что (и) не являются зарезервированными символами и поэтому не нуждаются в кодировании. - person David M; 11.12.2009
comment
Большое спасибо, я сообщу об этом своему клиенту. Есть ли у вас какие-нибудь идеи относительно того, как они это реализовали, возможно, используя другой стандарт кодирования? Или вы думаете, что это то, что они изобрели сами? - person JP.; 11.12.2009
comment
Вероятно, они вручную создали какую-то кодировку, которая заменяет пробелы на +, а затем заменяет все не буквенно-цифровые символы шестнадцатеричным кодом% +. - person David M; 12.12.2009

Похоже, что вам нужно сделать кодировку URL, а не «кодировку в UTF-8».

Для этого используйте

string encodedString = System.Web.HttpUtility.UrlEncode(yourString)

(UTF-8 - это механизм для внутреннего представления символов Юникода, а не для замены символов, которые в противном случае имеют значение при использовании в URI.)

person Jeremy McGee    schedule 11.12.2009
comment
Кажется, он не заменяет (и) символы. Я нашел дополнительную информацию о кодировке, которую я должен использовать от своего клиента. Это должна быть кодировка HTML-формы в соответствии с форматом преобразования UTF-8. Как я могу это сделать? - person JP.; 11.12.2009