我有一个遗留应用程序,来自不同国家的人填写Q& A并将它们发送到我们的服务器。一旦它到达我们的服务器,一切都转换为XML,以便能够轻松地在服务器之间传递。我收到了非英语国家的一些用户的报告,他们上传的内容没有通过服务器,查看日志文件似乎对所给出的答案感到窒息。
我让他们截取他们试图提交的答案的截图,认为非英文字符是无效的XML字符,但屏幕截图中的所有内容看起来都像普通字符(字母数字,大部分都是。)。
更奇怪的是,我已经采用了相同的答案,并使用我的(英语)键盘上传了表格,并没有遇到任何错误。
即使可视化表示看起来像普通的ASCII字符,它们是否有可能实际编码不同并导致问题,因为它们是在非英语键盘上输入的?
答案 0 :(得分:0)
XML通常是UTF-8编码的,也许你的代码没有考虑到这一点?如果UTF位于标记名称中,则这是特定于实现的。如果UTF是标签之间的值,听起来就像你有的那样,它应该没问题。
如果键盘来自拉丁语/德语,则ABC和重音符号将以您知道的ASCII匹配。如果你有另一种类似ABC字形的语言,例如俄语w / Cyrillic,它们的编码方式不同,因为它们可能不代表拉丁语/德语用户所知的声音。日语和中文甚至在unicode表中都有自己的拉丁子集,这些子集不是ASCII,有时这很容易发现,因为它通常是固定宽度或不熟悉/不干净的字体。这些将失败通用字符串比较。我相信像PHP这样的脚本语言有一个函数可以将各种unicode字符转换为它们的aSCII等价物。