2015-08-28 39 views
1

当我运行这段代码:mb_substr不截断中国字符正确

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

我期望的字符串不被截断,因为它是小于80个字符。

然而,这是输出:

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

任何想法,为什么mb_substr被截断它(并没有正确截断最后一个字符)?

回答

1

设置适当的编码,以由该函数要么使用:

  1. 作为第四个参数 - 例如mb_substr($x, 0, 80, "UTF-8")
  2. 或经由mb_internal_encoding()主叫mb_substr()
  3. 或通过runtime configuration之前。

Example:

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

输出:

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

谢谢 - 我与#2固定它:mb_internal_encoding( 'UTF-8'); –