从存储过程调用Web服务 - 未正确显示特殊字符

时间:2014-09-26 09:42:28

标签: sql web-services sql-server-2012 character

我正在尝试从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的来源中也显示为ë,因此未转换为ë

<&字符翻译得很好(进入&lt;&amp;),这些字符没有任何问题。

返回的XML来自<?xml version="1.0" encoding="ISO-8859-1"?>格式,当我在浏览器中打开服务时,它会正确显示。

我是否可以执行任何操作以使ë正常工作,或者是否需要更改返回的xml并将ë更改为&euml;

1 个答案:

答案 0 :(得分:0)

使用NVARCHAR类型解决此问题。

  

ë(带变音符号)变成?

您可能需要像this这样的用户函数来将结果字符串编码为此

的HTML
  

切割下一个字符,&lt;变成&lt;,&amp;进入&amp; ...和   等等