如果我有数据列表:
$a = "hello";
$b= "4f60";
$c = "hi";
$d = "00480065006C006C006F";
$b 和 $d 是 UCS-2 字符串。我希望在表格中显示所有这些数据,那么我如何知道哪些数据是 UCS-2 以便在显示之前进行转换?是否可以 ?我为 php.net 上的 unicode 尝试了 mb_detect_encoding 和 preg_match,但即使它是一个未知符号,它仍然被认为是 unicode。
谢谢你。
首先,您显示的字符串是十六进制表示,而不是实际的 UCS-2 或 UTF-8 编码。
也就是说,UCS-2和UTF-8之间存在一些相当大的差异,这将允许您编写能够以非常高的成功率正确检测编码的代码。但在此之前,请向我们展示您的使用方式mb_detect_encoding
,但它不起作用。重新发明一个比已经存在的更糟糕的轮子是没有意义的。
更新:您的输入字符串实际上不是编码的字节值;它们是值的十六进制表示。要撤消此操作,您可以使用
$proper_string = pack('H*', $hex_encoded_string);
在此之后,mb_detect_encoding
应该可以正常工作。