mb_substr没有正确截断中文字符

时间:2015-08-28 01:26:02

标签: php character-encoding substr

当我运行此代码时:

$x = '国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢の競演「宗達:創造の波」展開催';
var_dump(mb_substr($x, 0, 80));

我希望字符串不会被截断,因为它少于80个字符。

然而,这是输出:

string(80) "国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢�"

知道为什么mb_substr会截断它(而不是正确截断最后一个字符)?

1 个答案:

答案 0 :(得分:1)

设置函数使用的正确编码:

  1. 作为第四个参数 - 例如mb_substr($x, 0, 80, "UTF-8")
  2. 在致电mb_internal_encoding() 之前,
  3. 或通过mb_substr()
  4. runtime configuration
  5. Example:

    $x = '国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢の競演「宗達:創造の波」展開催';
    var_dump(mb_substr($x, 0, 80, "UTF-8"));
    

    输出:

    string(123) "国際交流基金 - 「松島図屏風」他 日米所蔵作品による夢の競演「宗達:創造の波」展開催"