Ну ... да.Назначение большинства функций, включая Encode::encode_utf8
, состоит в изменении значения входа.Входные данные для Encode::encode_utf8
могут содержать широкие символы (где ord($char) > 255
), но выводом всегда является строка байтов (где ord($char) <= 255
- истина для каждого символа в строке).
Часть вашего вопроса, в которую трудно поверить, это ваш первый пример вывода
#prints charEncoding string val = 歡迎來 ...
, где вы предполагаете, что вывод Encode::encode_utf8
содержит широкие символы.Вы должны дважды проверить эту часть.