使用CAST(作为XML)转换XML字符串在许多情况下都能正常工作,但如果字符串包含重音字符,则会出现错误“非法XML字符”。
declare @Text VARCHAR(max) =
'<?xml version="1.0" encoding="UTF-8"?>
<ROOT>níveis porém alocação</ROOT>'
select CAST(@Text AS XML)
declare @MessageText VARCHAR(max) =
'<?xml version="1.0" encoding="UTF-8"?>
<ROOT>nXveis porXm alocaXXo</ROOT>'
select CAST(@MessageText AS XML)
结果:
此外,同样的XML但是UTF-16编码,莫名其妙地工作:
declare @MessageText NVARCHAR(max) =
'<?xml version="1.0" encoding="UTF-16"?>
<ROOT>níveis porém alocação</ROOT>'
select CAST(@MessageText AS XML)
结果:
这些字符在UTF-8中是非法的吗?还是有更好的方法转换成XML数据类型?
SQL Server在内部为XML数据类型剥离任何XML声明prolog,并使用UTF-16编码。以下是如何正确处理您的用例。
SQL
-- Method #1
DECLARE @Text NVARCHAR(MAX) = N'<ROOT>níveis porém alocação</ROOT>';
SELECT CAST(@Text AS XML);
-- Method #2
DECLARE @MessageText NVARCHAR(MAX) =
'<?xml version="1.0" encoding="UTF-16"?>
<ROOT>níveis porém alocação</ROOT>';
SELECT CAST(@MessageText AS XML);
问题内容: 从我的数据库即时通讯获取以下字符串: 它应该说的是: 我试图像这样将其转换为utf-8: 但是仍然是同样的问题。 有任何想法吗? 问题答案: 使用npm中的utf8模块对字符串进行编码/解码。 安装: 在浏览器中: 在Node.js中: API: 编码: 将任何给定的JavaScript字符串(字符串)编码为UTF-8,并返回该字符串的UTF-8编码版本。如果输入字符串包含非标量值(即
问题内容: 我有一个带有“ñ”字符的字符串,并且我有一些问题。我需要将此字符串编码为UTF-8编码。我已经通过这种方式尝试过,但是没有用: 如何将该字符串编码为utf-8? 问题答案: Java中的对象使用无法修改的UTF-16编码。 唯一可以使用不同编码的是。因此,如果你需要UTF-8数据,则需要一个。如果你有一个包含意外数据的,则问题出在较早的地方,该错误地将一些二进制数据错误地转换为a (即
问题内容: 如何在Swift中将字符串转换为Unicode(UTF-8)字符串? 在Objective中,我可以这样写: 如何在Swift中做类似的事情? 问题答案: 使用此代码, 希望对您有所帮助
我有一个从第三方应用程序收到的字符串,我希望在我的Windows界面上使用C#以任何语言正确显示它。 由于编码不正确,我的字符串中有一段在西班牙语中如下所示: AcciÃn 然而它应该看起来像这样: 阿克松 根据这个问题的答案:如何知道C#中的字符串编码,我接收到的编码应该已经在UTF-8中出现了,但它是在编码时读取的。默认值(可能是ANSI?)。 我试图将这个字符串转换成真正的UTF-8,但问题
问题内容: 我发现了有关从java字符串获取java.util.streams.IntStream的问题,但是由于我使用的是Java 8,所以我没有找到此方法。 更正:正如你们指出的那样,我正在使用Java7。现在该方法就在那里。但问题仍然适用: 如何从字符串中获取a ? 问题答案: 我会指出较早的关于这个主题的答案,但是事实证明您已经与这个问题联系了。在对方的回答也提供了有用的信息。 如果需要值
问题内容: 就像标题所说的那样,我正在尝试在Java中将字符串“ test”编码为base32字符串“ ORSXG5A =“。 我在网上搜索时发现的所有类都是使用32位从字符串编码为数组的类,但是显然这不是我想要的。 很抱歉这个新手问题。 问题答案: Apache commons编解码器提供了一个可以执行此操作的类 版画 您可以在此处下载。