Delphi XE5 Base64解码Big5字符串遇到部分乱码!

crystalmoon 2014-02-25 02:46:36
测试字符串:p9o/p9quYQ==
正确解析的结果:我爱我家
试验结果:我?我家 (爱字丢失)
测试代码:
//uses Soap.EncdDecd
function DecodeBase64Str2: string;
var
InStr, OutStr: TStringStream;
begin
InStr := TStringStream.Create('p9o/p9quYQ==');
InStr.SaveToFile('c:\1.txt');//输出的结果 :p9o/p9quYQ== 正确
try
OutStr := TStringStream.Create('');
try
DecodeStream(InStr, OutStr);
OutStr.SaveToFile('c:\2.txt');
//输出的结果:и?и產 ,正确的应是и稲и產
//用第三方面软件将此按Big5编码字符查看为 我?我家
//此时已发生丢失“爱” 字
Result := TEncoding.GetEncoding(950).GetString(OutStr.Bytes); //将Big5编码转成gb2312
//Result:= '我?我家'
finally
OutStr.Free;
end;
finally
InStr.Free;
end;
end;
...全文
863 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
crystalmoon 2015-08-11
  • 打赏
  • 举报
回复
引用 3 楼 DelisPhi的回复:
我用UE感觉LZ的测试字符串有点问题,如果按照Big5码,“爱”这个字根本不在字符集里,繁体的这个字是“愛”,对应的“我愛我家”的Base64是p9q3UqfarmE=,这个串解码后才成为“и稲и產” 如果在文本编辑器里面输入“我爱我家”(对应楼主的字符串),虽然当时的“爱”字能出来,但只要一保存再用Big5码读取,立马变成?号。 也就是说,这可以视为文本输入框的强行非法字符上屏。。 再说直白一点,LZ根本就是把一个繁体字库里没有的字强行编码,再解码当然因为没这个字只能成?号。 求结贴,我是刚看到这个问题
不好意思,很久没上了,你的答案是正解,我现在是用csdn的安卓客户端,没法结帖,等上电脑就结
lyhoo163 2015-08-11
  • 打赏
  • 举报
回复
引用 2 楼 crystalmoon 的回复:
[quote=引用 1 楼 aqtata 的回复:] http://bbs.csdn.net/topics/380108122
用EncodeString问题更大,你可以试一下,我的这个代码能正常解UTF8,GB2312的(改一下代码页就可以),可以正常解出“我爱我家”BASE64编码,而且上面的代码也不是所有BIG5都解不出,换一个测试的字符串,比如“pGquYaZupKOmbqFDoUOhQw==”就能正常解出为“大家好不好。。。”,就是这一个"我爱我家"解不好,会丢字[/quote] 确实“爱”是简体字。它不在字符集当中,当然不能解出。
Frank.WU 2014-03-14
  • 打赏
  • 举报
回复




DelisPhi 2014-03-14
  • 打赏
  • 举报
回复
我用UE感觉LZ的测试字符串有点问题,如果按照Big5码,“爱”这个字根本不在字符集里,繁体的这个字是“愛”,对应的“我愛我家”的Base64是p9q3UqfarmE=,这个串解码后才成为“и稲и產” 如果在文本编辑器里面输入“我爱我家”(对应楼主的字符串),虽然当时的“爱”字能出来,但只要一保存再用Big5码读取,立马变成?号。 也就是说,这可以视为文本输入框的强行非法字符上屏。。 再说直白一点,LZ根本就是把一个繁体字库里没有的字强行编码,再解码当然因为没这个字只能成?号。 求结贴,我是刚看到这个问题
crystalmoon 2014-02-25
  • 打赏
  • 举报
回复
引用 1 楼 aqtata 的回复:
http://bbs.csdn.net/topics/380108122
用EncodeString问题更大,你可以试一下,我的这个代码能正常解UTF8,GB2312的(改一下代码页就可以),可以正常解出“我爱我家”BASE64编码,而且上面的代码也不是所有BIG5都解不出,换一个测试的字符串,比如“pGquYaZupKOmbqFDoUOhQw==”就能正常解出为“大家好不好。。。”,就是这一个"我爱我家"解不好,会丢字
一如当初 2014-02-25
  • 打赏
  • 举报
回复

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧