Как правильно декодировать акцентированные символы для отображения - PullRequest
4 голосов
/ 26 марта 2012

Мой текстовый файл необработанного входного файла содержит строку:

Caf&eacute (Should be Café)

Текстовый файл является файлом UTF8.

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

Какой метод (ы) C # можно использовать для вывода правильного формата, Café?

Видимо, общая проблема ?

Ответы [ 5 ]

4 голосов
/ 26 марта 2012

Вы пробовали System.Web.HttpUtility.HtmlDecode("Café")?возвращает результаты 538M

2 голосов
/ 26 марта 2012

Вы должны использовать SecurityElement.Escape при работе с файлами XML.

HtmlEncode закодирует множество дополнительных сущностей, которые не требуются. XML требует только экранирования>, <, &, "и ', что <code>SecurityElement.Escape делает.

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

РЕДАКТИРОВАТЬ: Конечно, это полезно только при записи XML-файлов.

2 голосов
/ 26 марта 2012

Это HTML кодированный текст.Вам необходимо его расшифровать:

string decoded = HttpUtility.HtmlDecode(text);

ОБНОВЛЕНИЕ: французский символ "é" имеет HTML-код "&eacute;", поэтому вам нужно исправить введенную строку.

0 голосов
/ 26 марта 2012

Используйте HttpUtility.HtmlDecode.Пример:

class Program
{
    static void Main()
    {
        XDocument doc = new XDocument(new XElement("test", 
            HttpUtility.HtmlDecode("caf&eacute;")));

        Console.WriteLine(doc);
        Console.ReadKey();
    }
}
0 голосов
/ 26 марта 2012

Я думаю, что это работает:

string utf8String = "Your string";

Encoding utf8 = Encoding.UTF8;
Encoding unicode = Encoding.Unicode;

byte[] utf8Bytes = utf8.GetBytes(utf8String);

byte[] unicodeBytes = Encoding.Convert(utf8, unicode, utf8Bytes);

char[] uniChars = new char[unicode.GetCharCount(unicodeBytes, 0, unicodeBytes.Length)];
unicode.GetChars(unicodeBytes, 0, unicodeBytes.Length, uniChars, 0);

string unicodeString = new string(uniChars);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...