Я пытаюсь расшифровать слово Микаэльздесь
using System;
using System.Net;
using System.Web;
public class Program
{
public static void Main()
{
string s1 = WebUtility.HtmlDecode("Mickaël") ;
string s2 = HttpUtility.HtmlDecode("Mickaël") ;
Console.WriteLine(s1);
Console.WriteLine(s2);
}
}
Но я получаю этот вывод:
Mickaël
Mickaël
Поэтому мне нужно знать, как правильно расшифровать это слово?
@ Ренат, извини, но кажется, я пробовал это!
В вашем вводе отсутствует точка с запятой после ë
. Расшифровка Mickaël
работает, см.: dotnetfiddle.net/JrGg5j
@canton7 спасибо :) не могли бы вы опубликовать это как ответ и объяснить, почему у нас есть это Mickaël
и Mickaël
как возможные закодированные слова для Mickaël
Ваш ввод неверен. Если вы HtmlEncode
Mickaël
, вы получите Mickaël
.
string s1 = WebUtility.HtmlDecode("Mickaël") ;
Console.WriteLine(s1);
Выходы Mickaël
Особенно обратите внимание на точку с запятой ;
@Owen Я нашел это слово в теле письма, затем я проверил расшифрованное значение, используя этот сайт codebeautify.org/html-decode-строка
TL;DR В вашем вводе отсутствует точка с запятой. Должно быть Mickaël
.
Если вы отметите спецификация, вы увидите, что существует три способа кодирования символа в HTML:
€ hexadecimal numeric character reference € decimal numeric character reference € named character reference
Все они начинаются с &
и заканчиваются на ;
.
ë
может быть закодирован либо как ссылка на именованный символ (ë
), либо с использованием его числовой ссылки на символ 235, закодированной как десятичная (ë
) или шестнадцатеричная (ë
).
В вашем вводе используется шестнадцатеричная кодировка, но отсутствует последний ;
. Если вы добавите его обратно, ваш код будет работать: https://dotnetfiddle.net/7PPLu4
(@OwenPauling identified the problem with the input first. I was asked to post an answer expanding on the different ways to encode the ë
in the comments)