Unicode &x9CE0&xEE839;及其他

Unicode &x9CE0&xEE839;及其他,unicode,utf-8,decode,Unicode,Utf 8,Decode,如何解码这些?这些是XML实体字符引用 您可以使用XML解析器将它们与XML的其余部分一起解码。这些是XML实体字符引用 您可以使用XML解析器将它们与XML的其余部分一起解码。您说“解码”是什么意思?它们表示由这两个十六进制数表示的Unicode字符。这很简单,所以你一定是在要求别的东西 您是在问关于这些代码点的已知情况吗?这可能有助于: $ uniprops 9ce0 ee839 U+9CE0 ‹鳠› \N{ U+9CE0 }: \w \pL \p{L_} \p{Lo} Al

如何解码这些?

这些是XML实体字符引用

您可以使用XML解析器将它们与XML的其余部分一起解码。

这些是XML实体字符引用


您可以使用XML解析器将它们与XML的其余部分一起解码。

您说“解码”是什么意思?它们表示由这两个十六进制数表示的Unicode字符。这很简单,所以你一定是在要求别的东西

您是在问关于这些代码点的已知情况吗?这可能有助于:

$ 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统一表意文字块中


你还有什么好奇的吗?

你说“解码”是什么意思?它们表示由这两个十六进制数表示的Unicode字符。这很简单,所以你一定是在要求别的东西

您是在问关于这些代码点的已知情况吗?这可能有助于:

$ 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统一表意文字块中


你还有什么好奇的地方吗?

正如其他人所说,你可能有一些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);

这似乎有很多代码,也许其他人会建议一些更简单的东西。

正如其他人所指出的,您可能已经在那里找到了一些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);

这似乎有很多代码,也许其他人会建议一些更简单的东西。

它们不是实体,只是字符引用。amp是一个实体。及;是引用名为amp的实体的实体引用。这些字符引用是在SGML中引入的。事实上,XML只是SGML的一个子集,它们不是实体,只是字符引用。amp是一个实体。及;是引用名为amp的实体的实体引用。这些字符引用是在SGML中引入的。事实上,XML只是SGML的一个子集。你使用什么语言和字符集/编码?@Gumbo:请告诉我你没有考虑那些代码点不是Unicode ——“人们真的这样做了吗?”——请说不是这样的——————附言:像我的代码点一样?:@Oded:我真的相信这不是同一个问题。@tchrist:我知道这些字符引用代表Unicode字符集中的字符。@Oded:当然,在另一个问题中,有人对UTF-8进行了双转义,好像它是某种8位编码,可能是ISO 8859-1。在这个问题上,这并没有发生,因为代码点远高于8位。你使用什么语言和字符集/编码?@Gumbo:请告诉我,你不认为这些代码点不是Unicode ——“人们真的这样做了吗?”——请说不是这样的——————附言:像我的代码点一样?:@Oded:我真的相信这不是同一个问题。@tchrist:我知道这些字符引用代表Unicode字符集中的字符。@Oded:当然,在另一个问题中,有人对UTF-8进行了双转义,好像它是某种8位编码,可能是ISO 8859-1。在这个问题中,这并没有发生,因为代码点远高于8位标记。我不明白您希望实现哪种类型的转换。不需要转换。我向您保证文件中的所有字符都是Unicode字符。我不明白您希望进行哪种转换。不需要转换。我保证文件中的所有字符都是Unicode字符。