我正在尝试使用 UPS Shipping API 打印国际货件标签。问题是某些收件人信息包含西班牙语字符,例如“José”中的é。在响应 ZPLII 代码中,所有这些字符都将被替换字符 � 替换,使得名称和地址难以读取。
我找到了在 ZPL 中打印 Unicode 字符的解决方案,其中我将 ^CI27
替换为
^CI28
,将所有
^FD
替换为
^FH^FD
,将所有
^FV
替换为
^FH^FV
。但是,由于所有西班牙语字符都替换为 �,我无法定位特殊字符以将它们正确映射到 UTF8 十六进制代码,例如将
é
映射到
_C3_A9
。我正在考虑删除所有重音符号,例如提前将所有
é
替换为
e
,但我不确定修改后的单词在西班牙语中是否仍然具有相同的含义。这是修改前的响应 ZPL 示例:
^FO15,142^A0N,28,32^FVSHIP TO: ^FS
^FO61,166^A0N,28,32^FVJOS�^FS
^FO61,194^A0N,28,32^FV(123)456-9890^FS
^FO61,222^A0N,28,32^FVSomeAddress with �^FS
^FO61,251^A0N,28,32^FVAPT 1, D^FS
^FO61,279^A0N,45,44^FV12345 MONTERREY NL^FS
^FO61,324^A0N,45,44^FVCOUNTRY^FS
有什么建议吗?
对我来说,这看起来像是输入文件的编码问题。我对斯洛伐克语字符也有类似的问题。整个文件中没有“ľ,š,č,ť,ž,ý,á,í,é,...”字符,而是“�”字符。文件本身报告为以 UTF-8 编码保存,这应该完全支持斯洛伐克语字符。我尝试使用 Windows 1250(中欧)编码打开此文件 - 删除了所有“�”字符。然后我用UTF-8保存文件,问题就解决了。
所以我认为你应该尝试对输入字符的编码进行一些调整,并将它们设置为 UTF-8 编码。也许它们报告为 UTF-8 字符,就像我的情况一样,但只是为了进行完整性检查,请尝试以西班牙语编码(应为 1252)重新打开它们并将它们保存为 UTF-8 以查看是否会更改任何内容。
但是,为了使用 ZPL 打印这些字符,您必须使用
^CI
命令更改 ZPL 中的字符集,并将 Unicode UTF-8 编码的值设置为
28
。在
Labelary Online ZPL 查看器中尝试一下:
^CI28
^FO15,142^A0N,28,32^FVSHIP TO: ^FS
^FO61,166^A0N,28,32^FVJOSÉ áíéóúñü^FS
^FO61,194^A0N,28,32^FV(123)456-9890^FS
^FO61,222^A0N,28,32^FVSomeAddress with íéá^FS
^FO61,251^A0N,28,32^FVAPT 1, D^FS
^FO61,279^A0N,45,44^FV12345 MONTERREY NL^FS
^FO61,324^A0N,45,44^FVCOUNTRY^FS
希望我对你有帮助。祝你有美好的一天:)