在DB中存储空间并显示给我带来问题

时间:2011-05-17 10:25:50

标签: php

我在文本字段中的空格作为' name '存储在mysql DB中,就像在UI中的' name '一样。但是当我将它显示在屏幕上时,它会正确显示。但是当我得到像strlen($var)这样的变量时,它会给我数为8而不是6。所以任何事情都像我正在做的那样错了吗?

1 个答案:

答案 0 :(得分:1)

这具有charset不匹配的所有标志。如果您的数据库使用的是UTF8编码,但您的Web应用程序使用的是LATIN1编码,则会发生这种情况。我建议仔细检查在数据库表和应用程序代码中使用相同的编码方案。还要确保运行SET NAMES查询以显式设置charset。

如果您使用客户端(SQLYog或某些人)直接连接到数据库,那么也可能使用不同的编码并以不同方式显示数据,即使有问题的Web应用程序和相关数据库也是如此正在使用相同的编码。

还有一件事,strlen不能处理每个字符使用超过1个字节的编码。你应该使用mb_strlen代替。

http://uk3.php.net/manual/en/function.mb-strlen.php