我怎么能转换字节数组成UTF-8字符串? 我需要这个,因为我是从一个二进制格式提取。
Answer 1:
字符串是无非字节数组更多。 因此,一个UTF-8字符串是非常相同的字节数组,不同之处在于,除了你知道什么是字节数组代表。
这样的字节的输入阵列需要一个多个附加信息,以及:所述字符集(字符编码)。 如果你知道输入的字符集,你可以字节数组转换成表示UTF-8字符串字节的另一个数组。
对于这样做的PHP方法被调用mb_convert_encoding()
PHP本身不知道的字符集(字符编码)。 因此,一个字符串真的是没有什么比一个字节数组多。 应用程序必须知道如何处理。
所以,如果你有一个字节数组,并希望把它转换成一个PHP字符串,以字符集转换使用mb_convert_encoding()
请尝试以下操作:
$input = array(0x53, 0x68, 0x69);
$output = '';
for ($i = 0, $j = count($input); $i < $j; ++$i) {
$output .= chr($input[$i]);
}
$output_utf8 = mb_convert_encoding($output, 'utf-8', 'enter input encoding here');
(代替以上所述单个例子,看看在更多的例子https://stackoverflow.com/a/5473057/530502 。)
$output_utf8
然后将被转换为UTF-8字节的输入阵列的PHP字符串。
文章来源: Array of bytes to UTF-8 string in PHP? [closed]