Delphi Web服务导入和非Ascii字符问题

时间:2009-03-01 21:39:57

标签: web-services delphi

我正在使用Delphi 2009更新2。 Borland WSDLIMP版本2.3 - $ Rev:16699 $

为什么标识符rápido显示为r_pido?
角色去哪了?
这是WSDLIMP错误还是MS XML错误?

感谢回复

File.XSD

<?xml version="1.0" encoding="UTF-8"?>
....
....
....
<xs:simpleType name="displayName">
<xs:restriction base="st">
<xs:enumeration value="rápido"/> //-----> attention !!!
<xs:enumeration value="lento"/>
....
....
....

命令提示符 - &gt;

wsdlimp -Oe- -Ow+ -P -= "c:\myWsdlFile.wsdl"=myService.pas

myService.pas

.....
.....
unit myService.pas;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
......
.....
displayName = (
r_pido, //---> attention!!! á Where did it go?
lento);

4 个答案:

答案 0 :(得分:1)

我看到你几个星期前问过这个问题in the Embarcadero forums

我怀疑WSDLImp实用程序尚未针对Delphi 2009的Unicode支持进行更新。相反,它继续生成早期版本生成的相同Delphi源文件,从而确保任何Delphi版本都可以使用生成的源文件。该实用程序尚未收到重大更新的一个线索是它仍然将自己列为Borland产品而不是CodeGear或Embarcadero。仅仅因为它被重新编译并且具有不同的版本号(2.2对2.3)并不意味着它与生成Unicode源文件所需的编译器和IDE进行相同的大修。

要检查的一件事是您的文件确实编码为UTF-8。文字á字符在UTF-8中被编码为两个字节,因此它不一定在编辑器中显示为该字符。确保该文件具有该字符应为的字节C3 A1。如果没有,那么您可能只是看到WSDLImp如何处理输入文件中的无效字节。

答案 1 :(得分:0)

不完全确定你的意思,但我怀疑在rápido中的á。尝试使用“a”作为rapido。

答案 2 :(得分:0)

rápido是delphi 2009的正确标识符(delphi 2009完全支持unicode)

答案 3 :(得分:0)

  

我怀疑WSDLImp实用程序没有   蜜蜂更新为Delphi 2009的Unicode   支撑

c:\ Program files \ codegear \ rad studio \ 6.0 \ source \ win32 \ soap \ wsdlimporter \ WSDLImp.dpr再次使用delphi 2009编译。

  

要检查的一件事是你的文件   真的被编码为UTF-8

用记事本打开

file.xsd。另存为 - &gt;编码 - &gt; UTF8 - &gt;保存