【发布时间】: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