You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB中获取UTF-16 LE格式的二进制字符串?

如何在MariaDB中获取UTF-16 LE格式的二进制字符串序列?

问题背景

在MariaDB中执行以下查询:

SELECT HEX(BINARY(CONVERT('ßÁÁÁÁÁȵ$€Łß' USING ucs2)));

得到的结果为:

00DF00C100C100C100C100C1010C00B5002420AC014100DF

该序列为**UTF-16 BE(大端序)**格式。

而在MS SQL Server中执行等价查询:

SELECT CONVERT(varbinary(100), N'ßÁÁÁÁÁȵ$€Łß',0)

返回的是**UTF-16 LE(小端序)**格式的结果:

0xDF00C100C100C100C100C1000C01B5002400AC204101DF00

解决方案

方案1:直接使用utf16le字符集转换

MariaDB支持utf16le字符集(对应UTF-16小端序),可以直接通过字符集转换得到目标格式:

SELECT HEX(BINARY(CONVERT('ßÁÁÁÁÁȵ$€Łß' USING utf16le)));

执行后将输出与MS SQL Server一致的UTF-16 LE格式十六进制序列:DF00C100C100C100C100C1000C01B5002400AC204101DF00

方案2:反转UTF-16 BE的字节对

若你的MariaDB版本不支持utf16le字符集,可先获取UTF-16 BE的十六进制结果,再通过正则表达式反转每两个字节的顺序:

SELECT REGEXP_REPLACE(
    HEX(BINARY(CONVERT('ßÁÁÁÁÁȵ$€Łß' USING ucs2))),
    '(..)(..)',
    '\\2\\1'
);

此方法会将UTF-16 BE的十六进制字符串按双字节单元反转顺序,最终生成UTF-16 LE格式的序列。

内容的提问来源于stack exchange,提问作者Jaroslav Zeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:51:20