[MySQL]如何支持utf8格式的UCS4unicode字符

filed中必须是CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

连接时必须set names "utf8mb4";

这是一段PHP示例

<?php
//$emoji_1 = "?????2\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c";
//$emoji_1 = "zß\u6c34\U0001f34c";
$emoji_1 = "\xf0\x9f\x8d\x8c";
$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.\n";
    }
}

附:

MySql中可以用UNHEX(FF...)插入HEX值,HEX值不会经过处理直接,写入内容。例如插入一个UTF8字符,输入的是这个字符的UTF8编码,而不是unicode编码

INSERT INTO my_tbl (my_col) VALUES (UNHEX('F09F949F'));

 

转载于:https://www.cnblogs.com/yiyide266/p/10491130.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值