HTML кодирует очень странные символы после декодирования ipBoard - PullRequest
0 голосов
/ 19 января 2011

Я никогда не видел этих персонажей раньше.Я считал информацию из базы данных IPBoard и отобразил ее на своей странице.То, что я увидел, было следующим:

( ゚ Д゚)

вместо этого (゚ Д ゚)
Будьте осторожны, это НЕ место, которое вы смотрите на этот японский смайлик

Я использовал:

Server.HTMLDecode (and) HTMLEncode 

, но в этом случае они не сработают.

У вас уже был опыт по этому вопросу, и вы хотите уточнить?

Ответы [ 2 ]

1 голос
/ 19 января 2011

У вас проблема с кодировкой.Последовательность должна читаться как UTF-8:

        byte[] bytes = {
                           0xEF, 0xBC, 0x88, 0xE3,
                           0x80, 0x80, 0xEF, 0xBE,
                           0x9F, 0x20, 0xD0, 0x94,
                           0xEF, 0xBE, 0x9F, 0xEF,
                           0xBC, 0x89, 0x0D, 0x0A,
                           0xEF, 0xBE, 0x9F
                       };
        string t = System.Text.Encoding.UTF8.GetString(bytes);
        System.Diagnostics.Trace.WriteLine(t);
1 голос
/ 19 января 2011

Если вы посмотрите на представление bin-hex кодировки UTF-8  ゚ Д゚, то оно будет выглядеть так:

ef bc 88 e3 80 80 ef be 9f 20 d0 94 ef be 9f ef bc 89

Если вы интерпретируете эти данные как строку в кодировке Windows-1252, то получите:

( ゚ Д゚)

Похоже, база данных IPBoard возвращает строку в кодировке UTF-8, которую сервер или браузер интерпретирует как строку Windows-1252.

Если это браузер, убедитесь, что в заголовках ответа http указано, что ответом является UTF-8 Content-Type: text/html; charset=utf-8, или добавьте следующий метатег в заголовке html:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
...