我们有一个在Weblogic服务器上运行的Java应用程序,它从JMS或MQ队列中获取XML消息并将其写入另一个JMS队列.应用程序不以任何方式修改XML内容.我们使用BEA的XMLObject来读取和写入队列中的消息.
XML消息包含UTF-8的编码类型声明.
当XML包含超出正常ASCII范围的字符时(例如£符号),我们遇到了问题.当从队列中读取消息时,我们可以看到£符号是完整的,但是一旦我们将它写入目标队列,£符号就会丢失并被替换为£.
我检查了操作系统级别设置(区域设置),一切似乎都没问题.我还应该检查什么以确保不会发生这种情况?
一旦我们将它写入目标队列,£符号就会丢失,而是替换为£
这告诉我字符被写为UTF-8,但它被读取就好像它是像ISO-8859-1这样的单字节编码.(对于U + 00A0..U + 00BF范围内的任何字符,如果将其编码为UTF-8并将其解码为ISO-8859-1,则最终得到两个字符的序列ÃX
,其中X
是原始字符. )我将查看接收JMS队列的编码设置.