我正在尝试从SQL Server 2012中的存储过程调用Web服务:
DECLARE @ResponseText AS VARCHAR(8000)
DECLARE @Object AS INT;
DECLARE @idoc INT;
Exec sp_OACreate 'MSXML2.ServerXMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get', @Webservice, 'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
Exec sp_OADestroy @Object
EXEC sp_xml_preparedocument @idoc OUTPUT, @ResponseText
调用有效但结果字符串@ResponseText
不会转换某些特殊字符。 ë
(带变音符号)变成?
,下一个字符被剪切掉。 ë
在xml的来源中也显示为ë
,因此未转换为ë
<
和&
字符翻译得很好(进入<
和&
),这些字符没有任何问题。
返回的XML来自<?xml version="1.0" encoding="ISO-8859-1"?>
格式,当我在浏览器中打开服务时,它会正确显示。
我是否可以执行任何操作以使ë
正常工作,或者是否需要更改返回的xml并将ë
更改为ë
?
答案 0 :(得分:0)
使用NVARCHAR类型解决此问题。
ë(带变音符号)变成?
您可能需要像this这样的用户函数来将结果字符串编码为此
的HTML切割下一个字符,&lt;变成&lt;,&amp;进入&amp; ...和 等等