【问题标题】:PHP - Convert unicode string to string?PHP - 将 unicode 字符串转换为字符串?
【发布时间】:2014-06-27 20:43:39
【问题描述】:

我有一个 GPS,它以 UNICODE 字符串格式返回地址,例如:

0053 004F 0053 0028 004C 0029 003A 0053 0068 0069 006D 0069 006E 0020 0046 0061 0069 
0072 0079 006C 0061 006E 0064 0020 0057 0065 0073 0074 0020 0052 0064 002C 0048 0075 
0069 0063 0068 0065 006E 0067 002C 0048 0075 0069 007A 0068 006F 0075 002C 0047 0075 
0061 006E 0067 0064 006F 006E 0067 0028 004E 0032 0033 002E 0031 0031 0031 002C 0045 
0031 0031 0034 002E 0034 0031 0031 0029 004E 0065 0061 0072 0062 0079

should be (according to this website: http://rishida.net/tools/conversion/)

S O S ( L ) : S h i m i n   F a i r y l a n d   W e s t   R d , 
H u i c h e n g , H u i z h o u , 
G u a n g d o n g ( N 2 3 . 1 1 1 , E 1 1 4 . 4 1 1 ) N e a r b y

如何在 PHP 中实现这一点?

【问题讨论】:

    标签: php unicode


    【解决方案1】:

    我获取了@user1978142 代码并对其进行了一些修改,以便它可以在我的 MAC 终端上正常显示。

    这是一个工作版本:

    <?php
    
    $string = '0053 004F 0053 0028 004C 0029 003A 0053 0068 0069 006D 0069 006E 0020 0046 0061 0069 
    0072 0079 006C 0061 006E 0064 0020 0057 0065 0073 0074 0020 0052 0064 002C 0048 0075 
    0069 0063 0068 0065 006E 0067 002C 0048 0075 0069 007A 0068 006F 0075 002C 0047 0075 
    0061 006E 0067 0064 006F 006E 0067 0028 004E 0032 0033 002E 0031 0031 0031 002C 0045 
    0031 0031 0034 002E 0034 0031 0031 0029 004E 0065 0061 0072 0062 0079';
    
    $final_string = '';
    foreach(explode(' ', $string) as $string) {
        $final_string .= chr('0x'.$string);
    }
    
    echo "\n".$final_string."\n";
    ?>
    

    【讨论】:

      【解决方案2】:

      您需要先分解每个字符串,然后在每个字符串上附加&amp;#x,以便您可以使用html_entity_decode()。考虑这个例子:

      $string = '0053 004F 0053 0028 004C 0029 003A 0053 0068 0069 006D 0069 006E 0020 0046 0061 0069 
      0072 0079 006C 0061 006E 0064 0020 0057 0065 0073 0074 0020 0052 0064 002C 0048 0075 
      0069 0063 0068 0065 006E 0067 002C 0048 0075 0069 007A 0068 006F 0075 002C 0047 0075 
      0061 006E 0067 0064 006F 006E 0067 0028 004E 0032 0033 002E 0031 0031 0031 002C 0045 
      0031 0031 0034 002E 0034 0031 0031 0029 004E 0065 0061 0072 0062 0079';
      
      $final_string = '';
      foreach(explode(' ', $string) as $string) {
          $final_string .= html_entity_decode('&#x' . trim($string));
      }
      
      echo $final_string;
      // SOS(L):Shimin Fairyland West Rd,Huicheng,Huizhou,Guangdong(N23.111,E114.411)Nearby
      

      【讨论】:

      • 谢谢,成功了。无论如何要将 html 实体转换为可以在 UNIX 终端上读取的内容?到目前为止,我尝试转换为 utf-8,但没有成功...
      • @MagisterMundus 在这种情况下是 HTML 格式,但就 CLI 而言,这是另一个故事,因为这个 unicode 等效项仅适用于 html,是的。自然这不会起作用,我认为对于 cli 它类似于\u0053 之类的东西,你也可以自己谷歌它,因为我不会全部记住它们
      【解决方案3】:

      可能重复:

      How to get the character from unicode code point in PHP?

      PHP: Convert unicode codepoint to UTF-8

      如果我理解正确,您可以在 stackoverflow 上查看这些主题。

      【讨论】:

        猜你喜欢
        • 2011-06-09
        • 2014-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-04
        • 2016-11-03
        • 1970-01-01
        相关资源
        最近更新 更多