Массив байтов в строку UTF-8 в PHP?

Как преобразовать массив байтов в строку 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.