为了与as400
通信,我将Java Web服务与jt400
库一起使用,该Web服务在Linux下运行。
调用as400程序后的文本结果包含带重音符的字符,例如é à è
…,但是在我的xhtml
页面中,文本无法正确显示,例如,é
被替换为{
。as400
的配置如下:ccsid : 65535
和encoding : 297
。
在Windows下运行相同的Web服务时,我可以正确显示带重音符号的字符
感谢您的帮助。
最佳答案
您似乎遇到了Mojibake的问题,这是由于以不正确的编码方式解释了文本字节而引起的。您提到é
被{
取代; CCSID 297中é
的代码点是0xC0
,而CCSID 37中的{
则是,因此这很有意义。
我不确定数据来自何处,但是如果您使用AS400Text将数据转换为Java String对象,则需要指定正确的CCSID,否则它将根据当前语言环境。您可以从AS400.getCcsid指定CCSID,也可以从AS400.getJobCCSIDEncoding指定关联的编码字符串值。