之前已经参考过很多文献和帖子,如[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*:
test
CREATE TABLE(
id
int(10) unsigned NOT NULL AUTO_INCREMENT,
content
text COLLATE utf8mb4_unicode_ci NOT NULL,
id
PRIMARY KEY ()
) 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
1
xiezefan 2015-04-28 01:00:59 +08:00 via iPad
楼主你要考虑,但很多时候, 线上的数据库是不能随便修改数据库文件的←_←
|
2
littlehz 2015-04-28 10:27:55 +08:00
utf8mb4字符集是趋势,手机上都支持Emoji,如果自己写表情替换占位符太麻烦,不如直接上utf8mb4。
|
4
cvmax 2015-04-28 13:09:09 +08:00
@konakona 1L说的有关系啊 “1. 修改my.ini [mysql] default-character-set = utf8mb4 [mysqld]character-set-server=utf8mb4” “线上的数据库是不能随便修改数据库文件的”
|
5
RIcter 2015-04-28 14:18:28 +08:00 via iPhone
然後 Wordpress 的各種 XSS 就出來了
|
6
jadecoder 2015-04-28 16:53:54 +08:00 1
如果改字符集不方便的话,把字段设成BLOB就可以了
|