我正在使用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 回答
我遇到了类似的问题 . 但是当我添加参数-Dfile.encoding = UTF8时,它就可以了 .
但是现在当我尝试在DSS中执行更新操作时,如下所示,编码问题再次发生 . 仍在努力 .