› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
konakona
V2EX  ›  MySQL

Emoji Mysql 存储问题...

  •  
  •   konakona ·
    54853315 · Apr 27, 2015 · 3485 views
    This topic created in 4182 days ago, the information mentioned may be changed or developed.

    之前已经参考过很多文献和帖子,如[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

    10 replies  •  2015-05-05 02:59:16 +08:00
    xiezefan
        1
    xiezefan  
       Apr 28, 2015 via iPad
    楼主你要考虑,但很多时候, 线上的数据库是不能随便修改数据库文件的←_←
    littlehz
        2
    littlehz  
       Apr 28, 2015
    utf8mb4字符集是趋势,手机上都支持Emoji,如果自己写表情替换占位符太麻烦,不如直接上utf8mb4。
    konakona
        3
    konakona  
    OP
       Apr 28, 2015
    @xiezefan
    @littlehz
    ……感谢你们2的回帖,但是怎么都感觉跟我的主题关系不大……=,,=
    cvmax
        4
    cvmax  
       Apr 28, 2015
    @konakona 1L说的有关系啊 “1. 修改my.ini [mysql] default-character-set = utf8mb4 [mysqld]character-set-server=utf8mb4” “线上的数据库是不能随便修改数据库文件的”
    RIcter
        5
    RIcter  
       Apr 28, 2015 via iPhone
    然後 Wordpress 的各種 XSS 就出來了
    jadecoder
        6
    jadecoder  
       Apr 28, 2015   ❤️ 1
    如果改字符集不方便的话,把字段设成BLOB就可以了
    konakona
        7
    konakona  
    OP
       Apr 28, 2015
    @cvmax 我正在进行本地测试...服务器上的可以再议啦!但是本地还不起作用。
    @RIcter 不是的不是的
    konakona
        8
    konakona  
    OP
       Apr 30, 2015
    @jadecoder -..- 这个...还能读取出数据么..
    jadecoder
        9
    jadecoder  
       Apr 30, 2015
    @konakona 能啊,就当text一样用就可以了。
    在phpMyadmin里有一个显示BLOB开关,打开就没区别了
    konakona
        10
    konakona  
    OP
       May 5, 2015
    @jadecoder 好好,明日试试!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4007 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 00:17 · PVG 08:17 · LAX 17:17 · JFK 20:17
    ♥ Do have faith in what you're doing.