php – 使用UTF-8编码的页面使用UTF-8编码将数据发送到MySQL但是条目被加扰
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 使用UTF-8编码的页面使用UTF-8编码将数据发送到MySQL但是条目被加扰,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2818字,纯文字阅读大概需要5分钟。
内容图文
![php – 使用UTF-8编码的页面使用UTF-8编码将数据发送到MySQL但是条目被加扰](/upload/InfoBanner/zyjiaocheng/892/96ce2a254d424f9d9dee9840da939888.jpg)
我意识到有十几个类似的问题,但没有一个解决方案表明在这种情况下有效.
我在页面上有一个PHP变量,初始化为:
$hometeam="Крылья Советов"; //Cyrrilic string
当我在页面上打印出来时,它会正确打印出来.所以echo $hometeam应该显示字符串КрыльяСоветов.
标头中的内容元标记设置如下:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
并且,在页面的最开始,我有以下内容(正如我在搜索中找到的解决方案中所建议的那样):
ini_set('default_charset', 'utf-8');
所以那应该是好的.
我正在尝试将此表保存到的MySQL表,以及有问题的列,将utf8_bin作为其编码.当我转到phpMyAdmin并手动输入КрыльяСоветов时,它会在现场正确保存.
但是,当我尝试通过页面上的查询保存它时,使用以下基本查询:
mysql_query("insert into tablename (round,hometeam) values ('1','$hometeam') ");
mysql条目如下所示:
c390c5a1c391e282acc391e280b9c390c2bbc391c592c391c28f20c390c2a1c390c2bec390c2b2c390c2b5c391e2809ac390c2bec390c2b2
那么这里发生了什么?如果页面上的一切正常,并且MySQL本身一切正常,问题出在哪里?有什么东西我应该添加到查询本身,以使其保持字符串UTF-8编码?
请注意,我已经设置了mysql_set_charset(‘utf8’);连接到数据库后(在页面顶部).
编辑:运行查询SHOW VARIABLES LIKE“%character_set%”给出以下内容:
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
看起来这里可能会有一些东西,因为该列表中有2个latin1.你怎么看?
此外,当我直接在phpMyAdmin中键入一个西里尔字符串时,它首先显示正常(它在我保存后正确显示).但是重新加载表格,它会像插入的那样显示在HEX中.我为这个问题的错误信息道歉.事实证明,这应该意味着问题在于phpMyAdmin或数据库本身.
编辑#2:这是show table tablename返回的内容:
CREATE TABLE `tablename` ( `id` int(11) NOT NULL AUTO_INCREMENT, `round` int(11), `hometeam` varchar(32) COLLATE utf8_bin NOT NULL, `competition` varchar(32) CHARACTER SET latin1 NOT NULL DEFAULT 'Russia', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=119 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
解决方法:
Also, when I type a Cyrillic string directly into phpMyAdmin, it
appears fine at first (it displays correctly after I save it). But
reloading the table, it displays in HEX like the inserted ones.
这几乎肯定看起来你的桌子有问题!运行show create table tablename.我敢打赌有latin1而不是utf8,因为你将它设置为character_set_database变量的默认值.
要更改此设置,请运行以下命令:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;
这个will convert所有的varchar字段都是utf8.但要小心你已经在表中的记录,因为它们已经格式不正确,如果你将它们转换为UTF8,它们将保持格式错误.也许最好的想法是再次创建数据库,只需在表定义的末尾添加以下命令:
CREATE TABLE `tablename` (
....
) ENGINE=<whatever you use> DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
内容总结
以上是互联网集市为您收集整理的php – 使用UTF-8编码的页面使用UTF-8编码将数据发送到MySQL但是条目被加扰全部内容,希望文章能够帮你解决php – 使用UTF-8编码的页面使用UTF-8编码将数据发送到MySQL但是条目被加扰所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。