我正在尝试解析UTF-8编码的XML字符串。
declare @xml varchar(max) = '<?xml version="1.0" encoding="UTF-8"?>
<Message>
<![CDATA[’]]>
</Message>'
select cast(cast(@xml as varchar(max)) as xml)执行这个查询会给我一个错误。
Msg 9420, Level 16, State 1, Line 6
XML parsing: line 3, character 11, illegal xml character如果我将UTF-8编码移除或替换为UTF-16,效果会很好。有什么关系?
我尝试使用C#控制台应用程序解析这个字符串,它成功地解析了XML。是SQL Server的bug吗?
SQL Server版本:
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4042.0 (X64) Mar 26 2015 21:18:04版权所有(c) Windows NT 6.2 (Build 9200:)上的Microsoft Corporation Developer Edition (64位)
发布于 2016-06-16 23:18:46
该字符(右引号)在这里编码为0x2019,它不是有效的UTF-8字符,它是UTF-16。查看这个关于Unicode character 0x2019的有帮助的页面。
它在.Net中工作,因为.Net字符串是UTF-16字符串。
编辑:如果您将上面的SQL代码片段保存为SSMS中的UTF-8,那么它将成功执行。
https://stackoverflow.com/questions/37861851
复制相似问题