所以,我有一个数据库,我使用Navicat。我们有一个简单的PHP网站,已经有几年了,我们已经将网站升级为UTF8。
我们在网站上有'活动',可以完美地处理UTF8特殊字符,但我们在网站上也有“评论”,单引号和其他特殊字符给我看了 。
数据库通过以下方式转换为UTF:
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
当我查看Navicat中的两个数据库时,我发现它们都是UTF8
和utf8_general_ci
。
当我设计表格时,我可以看到'活动'表,我可以看到单元格是一个中文文本,并使用UTF8进行设置。当我设计'comments'部分时,不工作的单元格是Blob,它没有任何字符编码信息。
我们正在做一个非常基本的SELECT,然后通过$ vairable [专栏]进行显示。
有谁知道为什么“活动”能够与UTF8完美配合,而“评论”会有问题吗?我们没有对他们中的任何一个做任何超凡的事情。
我已经尝试将Blob转换为文本字段,但是当我这样做时,数据库然后在它输出到页面时将其自行转义,因此只要文本中有单引号它就会被切断。
我尝试过像utf8_encode,stripslashes,mysql_real_escape_string,htmlentities,htmlspecialchars这样的东西,但我不确定它们中的任何一个都会有所帮助。
谢谢!
答案 0 :(得分:0)
blob表示二进制大对象。二进制数据在raw中没有任何编码。
所以你在一个blob中有latin1或者任何数据,你可以显示它并将其视为utf-8数据。
您需要使用PHP或其他任何方式手动转换数据。
以下是performanceblog中的一篇很好的文章,描述了你可以做什么:
如果您在解决查询时遇到问题,请使用控制台而不是phpMyAdmin,不要忘记通过SET NAMES
进行连接编码
master> ALTER TABLE t CONVERT TO CHARACTER SET utf8, CHANGE comment comment TEXT;
master> SET NAMES utf8;