【发布时间】:2010-07-14 17:38:42
【问题描述】:
大家好,我在尝试将我的网络应用程序转换为支持 unicode 字符时遇到了麻烦。我有以下脚本试图将俄语字符插入我的 mysql 数据库但只输出??????在我的 mysql 数据库字段中。我已将 php.ini 中的默认字符集更改为 UTF-8,并将表字段修改为排序规则:utf8_unicode_ci。有人有什么想法吗?
mb_language('uni'); mb_internal_encoding('UTF-8');
$sql = 'SET NAMES utf8';
$stmt = $conn->prepare($sql);
$result=$stmt->execute();
$sql = 'SET CHARACTER SET utf8';
$stmt = $conn->prepare($sql);
$result=$stmt->execute();
$sql = 'INSERT INTO topic (topic_id,topic_title) VALUES (?,?)';
$stmt6 = $conn->prepare($sql);
$result=$stmt6->execute(array(0,"дравствуйте"));
?>
显示创建表编辑
CREATE TABLE `topic` (
`id` mediumint(8) NOT NULL AUTO_INCREMENT,
`topic_title` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`description` mediumtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `description` (`description`),
FULLTEXT KEY `topic_title` (`topic_title`),
FULLTEXT KEY `topic_title_2` (`topic_title`,`description`),
FULLTEXT KEY `description_2` (`description`)
) ENGINE=MyISAM AUTO_INCREMENT=39 DEFAULT CHARSET=latin1
【问题讨论】:
-
你在哪里看到问号?
-
在我试图插入字符的 mysql 数据库中的 topic_title 字段中。当我回显这些字符时,它们在 php 中表现良好。
-
困惑...您在 MySql CLIENT 中看到问号,但数据是正确的 unicode 并且在从数据库查询时通过 PHP 打印正常?
-
没有大声笑,对不起,当我在 phpmyadmin 中查看字段时,在 unicode 应该是的字段中,它显示 ???????,但是当我在 php 中回显这些字符时(没有查询)他们显示。我只是想强调一下 php 配置似乎没问题。
-
我发现 UTF-8 在不使用 mb_ 函数和不调用 SET NAMES 的情况下也能正常工作。您的 PHP 和 MySQL 根本不需要知道您使用的是 UTF-8。正如 Wrikken 所指出的那样,您只需要确保浏览器确实如此。