zoukankan      html  css  js  c++  java
  • [MySQL]如何支持utf8格式的UCS4unicode字符

    字段中的字符集必须是utf8mb4, 如果你建表的时候默认字符集不是这个,那么字段就必须指明使用的是这个字符集;

    COLLATE 随意,通常为了提供更好的排序性能一般会使用utf8mb4_general_ci;

    连接时必须set names "utf8mb4";

    这是一段PHP示例

    <?php
    //$emoji_1 = "?????2x7axc3x9fxe6xb0xb4xf0x9fx8dx8c";
    //$emoji_1 = "zßu6c34U0001f34c";
    $emoji_1 = "xf0x9fx8dx8c";
    $dbh = new PDO( 'mysql:host=localhost;dbname=test', 'root', '' );
    $dbh->exec(' set names "utf8mb4" ');
    $tablename = "test_9";
    
    if($_GET['show'] == 1){
        $query = 'select * from `'.$tablename.'` where `id` = ?';
    
        $stm = $dbh->prepare($query);
        $stm->bindValue(1, $_GET['id'], PDO :: PARAM_INT );
        $stm->execute();
        while($row = $stm->fetch( PDO :: FETCH_ASSOC )){
            var_dump($row);
        }
    }else{
        $query = 'insert into `'.$tablename.'` (`name`, `a`)values(?, ?)';
        var_dump(strlen($emoji_1));
        $stm = $dbh->prepare($query);
        $stm->bindParam(1, $emoji_1, PDO :: PARAM_STR,  strlen($emoji_1));
        $stm->bindValue(2, 3, PDO :: PARAM_INT );
        if(!$stm -> execute ()){
            var_dump($stm -> errorInfo ());
        }else{
            echo "okay.
    ";
        }
    }

    附:

    MySql中可以用UNHEX(FF...)插入HEX值;

    虽然UNHEX的名字看起来很像是unicode hex的缩写,看上去很像是把unicode字符编码转换成字段的字符编码方式再写入,但实际上它不会对值做任何处理就直接写入内容。例如插入一个UTF8字符,输入的就是这个字符的UTF8编码,而不是unicode编码

    INSERT INTO my_tbl (my_col) VALUES (UNHEX('F09F949F'));
  • 相关阅读:
    CF235D
    模拟赛 circle 题解
    平面图总结
    kd 树总结
    思维题
    luogu P1600 天天爱跑步
    UOJ #42. 【清华集训2014】Sum
    FZOJ 4344 连通性
    平衡树
    计蒜客 T3225 Darko 的生成树
  • 原文地址:https://www.cnblogs.com/yiyide266/p/10491130.html
Copyright © 2011-2022 走看看