【问题标题】:Problems retrieve strings with accents WSO2 DSS DataServices问题检索带有重音符号的字符串 WSO2 DSS DataServices
【发布时间】:2015-07-27 12:31:42
【问题描述】:

我正在使用 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 工具托管在正确配置了 DataSource 的 Windows 2003 上。 数据服务 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 字符串?

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

问候,

【问题讨论】:

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


    【解决方案1】:

    我遇到了类似的问题。但是当我添加参数 -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"/>
    

    【讨论】:

    • 你好,理查德,我关注了你的 cmets。看起来是这样的;就我而言,我将启动设置为 Windows 服务,因此我必须查看并修改文件 C:\Program Files\yajsw-stable-11.11\conf\wrapper_dss.conf 添加以下行:wrapper.java.additional.XXX = -Dfile.encoding=UTF8,它似乎工作。如果我将来看到更多错误或其他解决方案,我会写下来。谢谢,问候,
    • 我这里弄错了,存储过程中定义的变量不支持双位。我改了之后,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2011-09-26
    • 2016-11-25
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    相关资源
    最近更新 更多