【问题标题】:SQL Server: How to convert an XML variable to UTF-8 encoded varbinary(max)?SQL Server:如何将 XML 变量转换为 UTF-8 编码的 varbinary(max)?
【发布时间】:2014-01-08 11:18:29
【问题描述】:

在 SQL Server 中,从 xml 类型到 varbinary 的默认转换使用使用 UTF-16 字符编码的 XML 文本编码(带尖括号的开始和结束标记等)。例如

declare @xml xml = '<foo><bar>abc</bar></foo>';
declare @foo varbinary(max);
set @foo = CONVERT(varbinary(max), @xml, 2);
select @foo

产量:

0xFFFE3C0066006F006F003E003C006200610072003E006100620063003C002F006200610072003E003C002F0066006F006F003E00

注意零,表示双字节字符。有没有办法转成UTF-8?

【问题讨论】:

标签: sql-server xml utf-8 utf-16


【解决方案1】:

也许这不是最好的方法,但我首先解决了将 xml 转换为 varchar 的问题:

declare @xml xml = '<foo><bar>abc</bar></foo>';
declare @xmlvarchar varchar(max) = CONVERT(varchar(max), @xml)
declare @foo varbinary(max) = CONVERT(varbinary(max), @xmlvarchar);
select @foo

输出是:

0x3C666F6F3E3C6261723E6162633C2F6261723E3C2F666F6F3E

当然,varchar 取决于您的数据库排序规则,在我的情况下(非特殊字符),此解决方案非常有效。

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 2014-02-02
    • 1970-01-01
    • 2020-04-07
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    相关资源
    最近更新 更多