问题检索带有重音的字符串WSO2 DSS DataServices

时间:2015-07-27 12:31:43

标签: encoding utf-8 xml-parsing wso2 wso2dss

我正在使用WSO2 DSS工具进行测试,希望在我的业务中使用它。 我的第一个概念证明,我遇到了编码和XML输出的问题。 我解释一下。

我在SQL Server中有一个简单的表:

CREATE TABLE [dbo].[USUARIOS] (
[nombre_usuario] varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[password] varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[entidad_persona] varchar(60) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY];

DSS工具托管在Windows 2003上,并正确配置了DataSource。 数据服务XML是:

<data name="SQLServer_FRONTAL" transports="http https">
<description>Queries Frontales_WEB</description>
<config id="SQLSERVER">
    <property name="carbon_datasource_name">SQLSERVER</property>
</config>
<query id="getUser" useConfig="SQLSERVER">
    <sql>SELECT entidad_persona FROM dbo.USUARIOS WHERE nombre_usuario = :idUser</sql>
    <result element="Users" escapeNonPrintableChar="true" rowName="User">
     <element column="entidad_persona" name="entidad_persona" xsdType="string"/></result>
  <param name="idUser" sqlType="STRING"/>
</query>
<operation name="getUser">
   <call-query href="getUser"><with-param name="idUser" query-param="idUser"/></call-query>
</operation>
<resource method="GET" path="getUser"><call-query href="getUser"><with-param name="idUser" query-param="idUser"/>
  </call-query>
</resource>
</data>

当我调用该操作并且列“entidad_persona”的值具有重音时,我得到XML错误。 如果它没有重音,那么回复是正确的。

示例:如果“entidad_persona”='Emilio Jiménez',那么在IE或FF浏览器中:

 Error de lectura XML: mal formado
 Ubicación: http://myserver:9764/services/SQLServer_FRONTAL/getUser?idUser=emiji
Número de línea 1, columna 100:
<Users xmlns="http://ws.wso2.org/dataservice"><User><entidad_persona>Emilio Jim�nez</entidad_persona></User></Users>

我认为SQL Server中的数据是Latin1或ISO-8859-1,DSS配置为处理UTF-8。

我可以在哪里更改DSS的配置以接受回复Latin1或ISO-8859-1?

启动时(wso2server.bat)观察到:-Dfile.encoding = UTF8

在catalina-server.xml中观察到URI-encoding =“UTF-8”

有哪些解决方案可以使用重音来获取XML字符串?

非常感谢你的帮助和时间,

此致

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。但是当我添加参数-Dfile.encoding = UTF8时,它就可以了。

但是现在当我尝试在DSS中执行更新操作时,如下所示,再次发生编码问题。仍在努力。

     <![CDATA[
        EXEC UpdateTaskMessageByTaskId ?, ?, ?;
    ]]>
    </sql>
    <result element="updateHumanTaskByIdResponse" >
        <element name="result" column="result" xsdType="boolean"/>
    </result>
    <param name="taskId" ordinal="1" sqlType="INTEGER"/>
    <param name="messageData" ordinal="2" sqlType="STRING"/>
    <param name="lastUpdateTime" ordinal="3" sqlType="BIGINT"/>