【问题标题】:How do I decode UTF-8 string in \x format to Unicode?如何将 \x 格式的 UTF-8 字符串解码为 Unicode?
【发布时间】:2020-05-11 21:46:29
【问题描述】:

我有这种格式的 Unicode 字符串:

$str = '\x576879204920616d';

我知道它可以解析为 Unicode 中的以下单词:

Why I am

但我不知道如何在 PHP 中做到这一点。

顺便说一句,我知道这是可以做到的。我使用过其中一个在线网站,这是可能的:

【问题讨论】:

    标签: php unicode encoding


    【解决方案1】:

    去掉废话并从十六进制转换。

    $in = '\x576879204920616d';
    $out = hex2bin(substr($in,2));
    
    var_dump($out); // string(8) "Why I am"
    

    我不知道你产生了什么输出格式,但它只是通用的十六进制编码,与 UTF8 或 Unicode 无关。

    【讨论】:

    • 它来自 Python 脚本,该脚本通过首先对字符串进行编码以将各种编码的字符串保存到数据库中:str.encode('UTF-8', 'surrogatepass')
    • @jjj 这闻起来像 Postgres 编码问题。由于错误指定的编码,我已经看到 postgres display 像这样完全有效的数据。
    【解决方案2】:

    使用 UTF-16BE(大端)和 Unicode 代码点之间的直接映射

       $str = '\x576879204920616d'; 
       echo mb_convert_encoding($str, 'UTF-8', 'UTF-16BE');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-15
      • 2013-06-27
      • 2010-09-21
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      相关资源
      最近更新 更多