鳠, ???? и другие

Как их расшифровать?


person Matts    schedule 14.11.2010    source источник
comment
Какой язык и набор символов / кодировку вы используете?   -  person Gumbo    schedule 14.11.2010
comment
@Gumbo: Пожалуйста скажите мне, что вы не считаете, что эти кодовые точки не Unicode⁉ Действительно ли люди делают это⁇ Пожалуйста, скажите, что это не так что‼ (PS: как мои кодовые точки? :)   -  person tchrist    schedule 14.11.2010
comment
@Oded: Я действительно считаю, что это не тот вопрос.   -  person tchrist    schedule 14.11.2010
comment
@tchrist: Я знаю, что эти ссылки на символы представляют символы в наборе символов Unicode.   -  person Gumbo    schedule 14.11.2010
comment
@Oded: Конечно, в другом вопросе какой-то numbskull дважды экранировал UTF-8, как если бы это была какая-то 8-битная кодировка, вероятно, ISO 8859-1. В этом вопросе этого не произошло, поскольку кодовые точки намного выше 8-битной отметки.   -  person tchrist    schedule 14.11.2010


Ответы (3)


Это ссылки на символы сущностей XML.

Вы можете декодировать их вместе с остальной частью вашего XML с помощью анализатора XML.

person SLaks    schedule 14.11.2010
comment
Это не объекты, это просто ссылки на символы. amp - это объект. А & - это ссылка на сущность, ссылающаяся на сущность с именем amp. - person Gumbo; 14.11.2010
comment
Эти ссылки на символы были введены в SGML. Фактически, XML - это лишь подмножество SGML. - person Gumbo; 14.11.2010

Что вы имеете в виду, когда говорите «декодировать»? Они представляют символы Юникода, представленные этими двумя шестнадцатеричными числами. Это довольно просто, так что вы, должно быть, просите что-то еще.

Вы спрашиваете, что известно об этих кодовых точках? Это может помочь:

$ uniprops 9ce0 ee839
U+9CE0 ‹鳠› \N{ U+9CE0 }:
    \w \pL \p{L_} \p{Lo}
    All Any Alnum Alpha Alphabetic Assigned
       InCJKUnifiedIdeographs L Lo Gr_Base Grapheme_Base Graph
       GrBase Han Hani ID_Continue IDC ID_Start IDS Ideo
       Ideographic Letter L_ Other_Letter Print UIdeo
       Unified_Ideograph Word XID_Continue XIDC XID_Start XIDS
U+EE839 ‹U+EE839› \N{ U+EE839 }:
    \pC \p{Cn}
    All Any InNoBlock C Other Cn Unassigned Zzzz Unknown

Таким образом, вторая кодовая точка в настоящее время не назначена, но первая находится в блоке CJK Unified Ideographs.

Было ли что-то еще, что вас интересовало?

person tchrist    schedule 14.11.2010
comment
Я не понимаю, какую конверсию вы хотите произвести. Никакого преобразования не требуется. И я гарантирую вам, что ВСЕ символы в файле являются символами Юникода. - person tchrist; 14.11.2010

Как отмечают другие, у вас, вероятно, есть ссылки на символы Unicode. Предполагая, что другие символы в вашем вводе уже являются действительными UTF-8, вы можете преобразовать ссылки на UTF-8 примерно так (я предполагаю, что PHP, как вы спрашивали об этом в соответствующем вопросе)

//take 1-4 byte hex string, convert to UTF-8 byte sequence
function hex2utf8($hex)
{
    //pad to 8 hex digits (32 bits)
    $hex=str_pad($hex, 8, '0',STR_PAD_LEFT);

    //build binary data octet by octet
    $decode='';
    while (!empty($hex))
    {
        $byte=substr($hex,0,2);
        $hex=substr($hex,2);
        $decode.=chr(hexdec($byte));
    }

    //binary data is UTF-32, convert it to UTF-8
    return iconv('UTF-32BE', 'UTF-8', $decode);;
}

function convertReferencesToUTF8($str)
{
    return preg_replace('~&#x([0-9a-f]+);~ei', 'hex2utf8("\\1")', $str);
}


$encoded="Unicode references 鳠, 󮠹";
$utf8=convertReferencesToUTF8($encoded);

Вроде много кода, может быть, кто-то подскажет что-нибудь попроще.

person Paul Dixon    schedule 14.11.2010