php utf8文本无法正确呈现

时间:2011-09-19 17:29:23

标签: php mysql substr

我有一个表格,其中我有一个utf8_unicode_ci格式的TEXT列。

我还有一个表单,我可以将多语言文本放入此字段。

当我从此列中获取每个文本时,我想只显示50个字符,所以我执行以下操作:

$text = $rows["text"];
$text = mb_substr($text, 0, 50);
$text = htmlentities($text, ENT_COMPAT, 'UTF-8');

这无法呈现非英文字符并且不显示任何内容,如果我将mb_substr函数放在htmlentities下面它会显示但它会剪切文本并显示一些& letter;& another;

我可以用任何方式解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以使用mb_internal_encoding将char编码更改为UTF-8,这可能会解决它。

mb_internal_encoding('UTF-8');

答案 1 :(得分:0)

如果您使用的是mySQL< 5.0.7:

在查询时启用utf -8 mysql_query(“SET NAMES utf8;”);

如果您使用的是较新的mySQL:

mysql_set_charset( “UTF8”);

header('Content-type:text / plain; charset = UTF-8');