Emoji Mysql 存储问题...

2015-04-27 19:55:22 +08:00
 konakona

之前已经参考过很多文献和帖子,如[https://www.v2ex.com/t/137724]等

我正在本机进行测试:
1. 修改my.ini [mysql] default-character-set = utf8mb4 [mysqld]character-set-server=utf8mb4
2. 重启mysql,检查mysql版本为5.6
3. 做了一个Demo PHP脚本,在Safari和Google Chrome浏览器中进行测试:

创建一个数据库*test2*,创建表*test*:


CREATE TABLE
test(
idint(10) unsigned NOT NULL AUTO_INCREMENT,
contenttext COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (
id)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

PHP脚本尝试存入和取出:

`
<?php
header("Content-type:text/html;charset=utf-8");
mysql_connect('localhost','root','');
mysql_select_db('test');
mysql_query('SET CHARSET utf8mb4');
if($_POST){
//insert table
mysql_query('INSERT INTO test(content)VALUES('.$_POST['emoji'].')');
echo '<p>Sql:INSERT INTO test(content)VALUES(\''.$_POST['emoji'].'\')</p>';
}

$result = mysql_query("select * from test order by id DESC");
echo '<ul>';
while($row = mysql_fetch_assoc($result)){
echo '<li>'.$row['content'].'</li>';
}
echo '</ul>';

?>

<style style="text/css">
* {
padding: 0px;
margin: 0px;
font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", Tahoma, "Hiragino Sans GB", "Microsoft Yahei", sans-serif;
}
</style>

加油!你的目标是实现录入💩(如果你看不到,说明你浏览器不支持)😄!

<form action="" method="post">

<input type="post" name="emoji">
<input type="submit" value="click me">

</form>

`

脚本效果:
http://i.imgur.com/Yn8JaL3.png

数据插入效果:
http://i.imgur.com/SG8L5ph.png

mysql版本:
http://i.imgur.com/3h5iAvk.png

2547 次点击
所在节点    MySQL
10 条回复
xiezefan
2015-04-28 01:00:59 +08:00
楼主你要考虑,但很多时候, 线上的数据库是不能随便修改数据库文件的←_←
littlehz
2015-04-28 10:27:55 +08:00
utf8mb4字符集是趋势,手机上都支持Emoji,如果自己写表情替换占位符太麻烦,不如直接上utf8mb4。
konakona
2015-04-28 11:32:12 +08:00
@xiezefan
@littlehz
……感谢你们2的回帖,但是怎么都感觉跟我的主题关系不大……=,,=
cvmax
2015-04-28 13:09:09 +08:00
@konakona 1L说的有关系啊 “1. 修改my.ini [mysql] default-character-set = utf8mb4 [mysqld]character-set-server=utf8mb4” “线上的数据库是不能随便修改数据库文件的”
RIcter
2015-04-28 14:18:28 +08:00
然後 Wordpress 的各種 XSS 就出來了
jadecoder
2015-04-28 16:53:54 +08:00
如果改字符集不方便的话,把字段设成BLOB就可以了
konakona
2015-04-28 18:57:09 +08:00
@cvmax 我正在进行本地测试...服务器上的可以再议啦!但是本地还不起作用。
@RIcter 不是的不是的
konakona
2015-04-30 12:19:44 +08:00
@jadecoder -..- 这个...还能读取出数据么..
jadecoder
2015-04-30 15:34:11 +08:00
@konakona 能啊,就当text一样用就可以了。
在phpMyadmin里有一个显示BLOB开关,打开就没区别了
konakona
2015-05-05 02:59:16 +08:00
@jadecoder 好好,明日试试!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/186789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX