继承我的问题。我有一个名为quotes的mysql表。在其中一行中,引号包含folloqing字符
‘ and ’
现在行整理是 utf8__unicode__ci
当使用MySQL Query Browser和PHPMyAdmin来检索行时,引号按预期出现。然而,当我使用PHP从数据库中检索它们并将它们显示在屏幕上时,它们就像盒子一样出现了
� and �
我的html页面有UTF-8编码,所有UTF-8编码选项都在php中设置:
/* Set UTF-8 settings */
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
mb_http_output('UTF-8');
/* Set ICONV ini settings */
ini_set('iconv.input_encoding', 'UTF-8');
ini_set('iconv.output_encoding', 'UTF-8');
ini_set('iconv.internal_encoding', 'UTF-8');
/* Set ICONV function settings */
iconv_set_encoding('input_encoding', 'UTF-8');
iconv_set_encoding('output_encoding', 'UTF-8');
iconv_set_encoding('internal_encoding', 'UTF-8');
在我看来它应该有效。但它没有:S可以让任何人对此有所了解。
答案 0 :(得分:5)
您可能需要将UTF-8设置为MySQL连接上选择的字符集。如果您使用的是mysqli PHP驱动程序,则意味着这样:
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
$mysqli->set_charset("utf8");
答案 1 :(得分:4)
@Joakim,非常感谢你让我朝着正确的方向前进。我无法使用您的确切代码,因为即时通讯使用自定义数据库驱动程序,它使用旧的mysql命令而不是mysqli类。我尝试使用mysql_set_charset()但我的php版本不支持它(仍然是php 5 tho)。
这是我使用的解决方案:
mysql_query("SET CHARACTER SET utf8", $this->connection);
mysql_query("SET NAMES utf8", $this->connection);
答案 2 :(得分:1)
你的整理对你没有帮助;它只是确定排序顺序。您需要将默认字符集设置为utf-8,如:
CREATE TABLE `foo` (
`id` int not null auto_increment,
`name` varchar(50)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
您应该可以通过以下方式解决此问题:
ALTER TABLE `foo` DEFAULT CHARSET=utf8
如果他们在utf-8中,有时你的索引太长了。