MySQL &#格式unicode转汉字

"本文介绍了Unicode编码的三种表示形式——`u`、`&#x`和`&#`,并强调`u`和`&#x`都是16进制,而`&#`是10进制。此外,分享了一个MySQL函数`unicode_decode`,用于将含有10进制Unicode编码的内容解码为汉字。这个函数对于处理存储了预转码Unicode数据的数据库表非常有用。"
摘要由CSDN通过智能技术生成

一、unicode三种格式

&#&#x\u 都可以用来表示一串 unicode 编码。

 其实  \u 开头和  &#x 开头是一样的  都是16进制 unicode字符的不同写法,&# 则是 unicode字符的10进制的写法.

  \u     16进制unicode

 &#x    16进制unicode

&#      10进制unicode

二、MySQL表中unicode的转码

有些应用在保存数据时,不是使用mysql的编码,而是预先进行了转码,这样保存在表里的就是转码后以unicode格式保存的内容。如果都要从mysql中检索出来之后在程序里处理,就无法利用mysql本身的检索等能力。而且,如果用外部程序转换完再重新保存回mysql表,性能又差。

网上有针对16进制unicode代码编写的unicode转汉字mysql 函数,参考16进制代码,我编写了十进制unicode转汉字的函数,更简单。

DROP FUNCTION IF EXISTS unicode_decode;
DELIMITER $$
CREATE FUNCTION unicode_decode(content text) 
RETURNS text
BEGIN
    DECLARE code  varchar(20);
    DECLARE n_index,s_index smallint unsigned default 0;
    DECLARE result,tmp_txt text;
    DECLARE temp varchar(1);
    SET s_index=LOCATE("&#", content,1);
    set result = "";
    while s_index>0 DO 
        set code = conv(substring(content,s_index+2,5),10,10);
        set temp = convert(char(code) USING 'ucs2');
	set result = concat(result,temp);
        set s_index = LOCATE("&#", content, s_index+1);
    END while ; 
    RETURN result;
END $$


16进制的转码代码参见:

https://blog.csdn.net/u012825187/article/details/102922521?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~aggregatepage~first_rank_v2~rank_aggregation-2-102922521.pc_agg_rank_aggregation&utm_term=mysqlunicode%E8%BD%AC%E4%B8%AD%E6%96%87&spm=1000.2123.3001.4430

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值