一份 XML 文件在网络传输的过程中,修改了其中的数值,如何会导致中文部分变乱码?
已经解决:
刚刚试了一下,一份包含中文的文件,只要经过抓包工具的修改,到达客户端之后就会变成 ?????,基本确定是拦截的问题了…
首先本问题可能会涉及游戏存档修改,但不涉及具体某个游戏,目的仅为技术讨论,希望管理员手下留情,如果实在不合适,可删。
某个游戏,可以在线备份游戏存档,存档恢复的过程中,是一份明文的 XML 格式。
在传说的过程中,通过拦截等方式,将 XML 中的某些数字进行修改(例如金币),修改之后游戏存档正常恢复,并且游戏可以正常读取到修改之后的金币。
但是,游戏中的一些中文(例如人名)会变成 ?????? 一堆问号。
我尝试过:
修改的数值长度不变化,例如原先 10000 金币,我就改成 20000 ,仍然乱码;
将 content-length 的长度一起修改,仍然乱码;
给中文部分加上 CDATA 标签,仍然乱码;
我在修改数据的时候,是直接复制 XML 内容到编辑器修改,改完直接粘贴回去;
也试过直接在抓包工具上修改,但也乱码;
原本是想改存档,但现在存档已经无所谓了,因为实在想不通为什么会导致中文部分变乱码,而其它部分却可以正常读取。
希望能讨论一下是什么原因,如果有哪位朋友知道我是说哪个游戏,也请不要提及名称~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
修改之后再粘贴回去的时候需要与原编码保持一致。
比如游戏本来使用的是UTF-8编码。你复制出来粘贴到文本编辑器中后可能会变成其他编码(例如GBK),这样改了之后再复制粘贴回去编码就不对了。
另外,看你的描述,你好像是用抓包工具来拦截数据的。那么抓包工具本身也可能会转码。比如游戏本来是用的是UTF-8编码,抓包工具抓到后显示给你时用的是GBK编码,那么你复制、粘贴回去的都将是GBK编码的文本,最后传到游戏中的时候肯定就不对了。
所以你应该检查:
游戏本身使用的编码
抓包工具使用的编码
文本编辑器粘贴回去时使用的编码
只有这3者编码都统一了才能得到最终正确的编码。