Когда я запускаю этот код:
$x = '国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢の競演「宗達:創造の波」展開催';
var_dump(mb_substr($x, 0, 80));
Я ожидаю, что строка не будет усечена, потому что она меньше 80 символов.
Однако это результат:
string(80) "国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢�"
Любая идея, почему mb_substr обрезает ее (и не урезает последний символ должным образом)?
Установите правильную кодировку, которая будет использоваться функцией:
mb_substr($x, 0, 80, "UTF-8")
mb_internal_encoding()
перед вызовом mb_substr()
$x = '国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢の競演「宗達:創造の波」展開催';
var_dump(mb_substr($x, 0, 80, "UTF-8"));
Вывод:
string(123) "国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢の競演「宗達:創造の波」展開催"