嘿伙计们我在尝试转换我的网络应用程序以支持unicode字符时遇到了麻烦。我有以下脚本试图将俄罗斯字符插入我的mysql数据库,但只是输出??????在我的mysql数据库字段中。我在php.ini中将默认字符集更改为UTF-8,并将我的表字段修改为collation: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
答案 0 :(得分:1)
我使用以下sql alter database mydatabase charset = utf8;
让它工作答案 1 :(得分:0)
通常情况下,(如果你引用的文件也是utf-8),PHP& MySQL方面没问题,但事情的HTTP / HTML方面却没有。
Content-Type: text/html;charset=utf-8
标题?<meta>
元素声明了另一个字符集,然后是utf-8?所以,在更多信息之后:在'普通'PHP脚本中,我收集(?),在PHPMyAdmin中它没有(这应该使它更像是superuser.com b.t.w的候选者)。使用的PHPMyAdmin版本会很好,但通常情况下,如果非PHPMyAdmin脚本的其余部分工作,PHPMyAdmin配置中的$cfg['DefaultCharset'] = 'utf-8';
应该可以正常工作。如果不是:更新到最新的PHPMyAdmin版本,如果它仍然无效,则提交错误报告。
答案 2 :(得分:0)
如果您在mysql浏览器或mysql cli上看到??????
,请确保调整程序上的字符集设置,即使条目已正确添加到数据库中,正确显示它们也取决于客户端字符集设置。
答案 3 :(得分:0)
我倾向于认为问题不在于MySQL。
您正在将非ASCII字符串作为文字输入到PHP脚本中。你确定“дравствуйте”字符串将以UTF-8编码的形式发送到MySQL服务器吗?
我已经看到使用PHP和MySQL的nos ASCII字符存在一些问题,在操作系统,PHP解释器(它继承了操作系统的默认设置),数据库和开发工具(编码方式)之间存在不兼容的字符集配置。 .php文件)。如果所有四个都配置为相同的编码,它应该工作。
你说你的php.ini配置为UTF-8。如果您的源php文件不是UTF-8,它将无法正常工作!因此,检查您的php文件是否编码为UTF-8,以及mysql客户端是否也配置为UTF-8。
一个常见的错误是忘记将MySQL客户端配置为UTF-8,并且由于MySQL客户端应用程序的字符集问题而无法检查数据库上的数据。
家里有帮助!
答案 4 :(得分:0)
用于存储表情符号的数据库活动
1)[client]下的default-character-set = utf8mb4
2)[mysql]下的default-character-set = utf8mb4
3)在[mysqld]下 字符集客户端握手=否 字符集服务器=`utf8mb4` collation-server =`utf8mb4_unicode_ci`
4)使用以下命令重新启动Mysql服务器
`sudo service mysql stop` `sudo service mysql start`
5)ALTER DATABASE数据库名称字符集= utf8mb4 COLLATE = utf8mb4_unicode_ci;
6)ALTER TABLE table_name转换为字符集utf8mb4 COLLUT utf8mb4_unicode_ci;
7)设置名称utf8mb4;
答案 5 :(得分:0)
请从 PHPMYADMIN 中将排序规则更改为 utf32_general_ci,他们将支持并且某些情况下它将使现有的“????”也纠正一个。