2014-12-02 4 views
2

H, у меня есть строка, что я получил от HTM файлаКак преобразовать UTF8 в строку в C#

String s = "%u05d9%u05e8%u05d5%u05e9%u05dc%u05d9%u05dd" 

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

Я пытался это сделать, но это не работает -

byte[] bytes = Encoding.UTF8.GetBytes(s); 
addr = Encoding.UTF8.GetString(bytes); 
+2

@huMptyduMpty: Это может быть дубликатом, но, конечно, не из этого вопроса. Тот, который вы связали, кодируется Base64, как вы можете видеть из ответов, предоставленных как на этот вопрос, так и на тот, который вы связали, решения совершенно разные ... поэтому у них должны быть разные вопросы. – musefan

ответ

3

Исходная строка может быть UTF-8 кодируются, но это не имеет значения, потому что вы имеете право теперь это строка с кодировкой URL. Вы можете расшифровать его с помощью HttpUtility.UrlDecode:

System.Web.HttpUtility.UrlDecode("%u05d9%u05e8%u05d5%u05e9%u05dc%u05d9%u05dd") 

возвращает ירושלים

+0

Я попытался использовать System.Web, но у меня вообще нет HttpUtility. В MSDN говорится, что « « Для кодирования или декодирования значений за пределами веб-приложения используйте класс WebUtility ». Итак, я попробовал - System.Net.WebUtility.UrlDecode (s); Как и maruthu chandrasekaran, но все же он ничего не делает. Он возвращает мне мою исходную строку - % u05d9% u05e8% u05d5% u05e9% u05dc% u05d9% u05dd –

+0

Вы правы, по-видимому, WebUtility.UrlDecode работает иначе, чем HttpUtility.UrlDecode. Вы можете использовать HttpUtility вне веб-приложения. Все, что вам нужно сделать, это ссылка System.Web.dll. – Dirk

+0

Я добавляю ссылку, и она работает! Благодаря! :) –

0

попробовать

System.Net.WebUtility.UrlDecode(s); 
+0

Я попробовал - System.Net.WebUtility. UrlDecode (ы); но все равно это ничего не делает. Он возвращает мне мою исходную строку -% u05d9% u05e8% u05d5% u05e9% u05dc% u05d9% u05dd –

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