将 ISO-8859-1 字符代码转换为 UTF-8



我有一个输入字符串,如下所示:

4BFC434845000000

输入字符串中每两个字符表示 ISO-8859-1 中的十六进制代码。

  • 示例中的前两个字符(4B(代表数字4B16,在ISO-8859-1中代表K
  • 后两个字符(FC(代表数字FC16,在ISO-8859-1中代表德语u变音符号(ü(。

上面的示例字符串表示Küche,这是德语中厨房的意思。

输入字符串的长度保证为 16 个字符,因此生成的字符串将始终为 8 个字符长。未使用的字符(如示例中所示(将被00

我知道我可以在 PHP 中使用iconv或其他函数将 ISO-8859-1 字符串转换为另一种字符编码。但是我不知道如何将 ISO-8859-1 字符(例如 FC16或 25210(转换为 UTF-8 字符。

当然,我可以有一个关联数组将所有字符映射到它们所代表的字符:

$table = array(
0x4B => 'K',
0xFC => 'ü',
// ...
);

实现相同目标的最佳方法是什么?有没有一个PHP函数可以做到这一点?

这是相当微不足道的:将十六进制字符串转换为二进制,将 ISO-8859 二进制转换为 UTF-8 二进制:

$input = '4BFC434845000000';
echo iconv('ISO-8859-1', 'UTF-8', hex2bin($input));

(可选(在某个时候去除NUL字节。

最新更新