1

如果我有数据列表:

$a = "hello";

$b= "4f60";

$c = "hi";

$d = "00480065006C006C006F";

$b 和 $d 是 UCS-2 字符串。我希望在表格中显示所有这些数据,那么我如何知道哪些数据是 UCS-2 以便在显示之前进行转换?是否可以 ?我为 php.net 上的 unicode 尝试了 mb_detect_encoding 和 preg_match,但即使它是一个未知符号,它仍然被认为是 unicode。

谢谢你。

4

1 回答 1

4

首先,您显示的字符串是十六进制表示,而不是实际的 UCS-2 或 UTF-8 编码。

也就是说,UCS-2UTF-8之间存在一些相当大的差异,这将允许您编写能够以非常高的成功率正确检测编码的代码。但在此之前,请向我们展示您的使用方式mb_detect_encoding,但它不起作用。重新发明一个比已经存在的更糟糕的轮子是没有意义的。

更新:您的输入字符串实际上不是编码的字节值;它们是值的十六进制表示。要撤消此操作,您可以使用

$proper_string = pack('H*', $hex_encoded_string);

在此之后,mb_detect_encoding应该可以正常工作。

于 2012-01-19T18:14:03.780 回答