我在文本字段中的空格作为' name '
存储在mysql DB中,就像在UI中的' name '
一样。但是当我将它显示在屏幕上时,它会正确显示。但是当我得到像strlen($var)
这样的变量时,它会给我数为8而不是6。所以任何事情都像我正在做的那样错了吗?
答案 0 :(得分:1)
这具有charset不匹配的所有标志。如果您的数据库使用的是UTF8编码,但您的Web应用程序使用的是LATIN1编码,则会发生这种情况。我建议仔细检查在数据库表和应用程序代码中使用相同的编码方案。还要确保运行SET NAMES查询以显式设置charset。
如果您使用客户端(SQLYog或某些人)直接连接到数据库,那么也可能使用不同的编码并以不同方式显示数据,即使有问题的Web应用程序和相关数据库也是如此正在使用相同的编码。
还有一件事,strlen不能处理每个字符使用超过1个字节的编码。你应该使用mb_strlen代替。