【发布时间】:2011-02-07 23:34:54
【问题描述】:
数据通过带有 utf-8 编码数据的 XML 进入我的应用程序。用户输入的文本保存在 XML 中,然后我的应用程序会读取它。
最近当用户在末尾写了一个特殊字符时它失败了。结果是在 XML 中,每个字符前面都有一个额外的 0x40 字符。所以不是接收:
67 6f 20 61 68 65 61 64 (go ahead)
收到了:
40 67 40 6f 40 20 40 61 40 68 40 65 40 61 40 64 (@g@o@ @a@h@e@a@d)
出了什么问题?
二进制中的 0x40 是 01000000,这让我觉得 1 是某种控制位,它采用不同的编码......
【问题讨论】:
-
你需要提供一个真实的例子——“一个特殊字符”是什么意思?什么程序处理用户输入并生成 XML?您的应用程序是如何读取它的(DOM、流、...)?你是怎么看到有多余的字节的(你用什么程序显示了多余的 0x40 字节)?
-
好吧,看来我的水晶球又坏了。抱歉,我帮不上忙。
-
这是一个 XML,payload 应该是用 utf-8 编码的: 用户介绍的 3 个字符是:字母 b + 双卷曲引号 + 字母 b 正如您在 XML 中看到的,两个字母 b 前面都有一个额外的 40。数据是从使用 USSD 的手机引入的,我不知道也无法控制数据如何通过网络传输到生成 de XML 的网关...有人告诉我网络使用 GSM7bit 编码...
-
“406220C64062”的哪一部分是“大弯双引号”? 20C6?是直接来自 GSM7bit 的吗?
标签: xml unicode encoding utf-8 utf-16