PHP интерпретирует строку UTF-8 как последовательность 8-битных символов. Тогда как в Javascript каждый символ может преобразовываться в кодовую точку Unicode.
Ваша компактная и полностью нечитаемая реализация Javascript использует .charCodeAt()
для преобразования строки в шестнадцатеричную строку. Я не удосужился исследовать его полностью, но, скорее всего, "ś".charCodeAt(0)
просто разрешается до 347
, а оставшаяся часть преобразования ожидает значение в 8-битном диапазоне от 0
до 255
.