Как преобразовать массив байтов в строку UTF-8? Мне нужно это, потому что я извлекаю из двоичного формата.
Строка – это не что иное, как массив байтов. Таким образом, строка 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
тогда будет строкой PHP входного массива байтов, преобразованного в UTF-8.