Base64编码问题,请高手指教!

yyunffu 2008-03-04 11:12:38
在Base64编码中,在每行达到76个字符时,通常都会加上回车换行字符。
问题如下:如果是自己做解码,会去掉回车换行,如果把编码发送至非自己解码处,比如现在我所做的项目中,是用Http协议访问XML WebService,这时上传图片需要Base64编码,WebService一端是不知道回车换行的,所以图片上传服务器数据库之后,读出来时就会发生:GDI+中出现一般性异常的异常信息!
另外,我图片上传时要进行分割,到服务器之后进行合并,问题出现在合并中。
请问各位高手,这种问题如何妥善解决?多多谢过各位指点!
...全文
220 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyunffu 2008-03-08
  • 打赏
  • 举报
回复
对各位提供帮助深表感谢!该问题告一段落,多多谢过各位指教!
yyunffu 2008-03-04
  • 打赏
  • 举报
回复
多谢!我确实是用文本方式打开了!多多谢过,我试试!
  • 打赏
  • 举报
回复
这个通常是你打开文件的时候错误。
一般用二进制的方法打开。我怀疑你用文本模式打开了。
base64的编码和解码不会造成数据丢失的。
yyunffu 2008-03-04
  • 打赏
  • 举报
回复
在C++下,是MFC下,分割比较大的图片,比如以200K作为单位,之后上传,到WebService一端存入数据库,上传完成之后,进行合并,合并是在.NET下用C++2005合并的,这样就有可能会有问题,问题提示:GDI+中出现一般性异常。
图片拿出来写入自己硬盘上,用ACDSee打开,发现图片只能显示一部分,是分割后的第一部分,在图片文件链接处会出现问题,我怀疑是编码时数据出现问题,上传之后才会有这种问题;理由是在客户端进行分割合并都没有问题,问题情况如下:
这是用记事本打开看到的:
第一部分分割文件结尾数据:鶵oA$?a顈?|1妣U? ,注意后面有一个不可见字符。
第二部分数据问件开始处:TZct\喪YN2=馴V
合并后该结合处数据:鶵oA$?a顈?|1妣U?臫Zct\喪YN2=馴V, 发现在1妣U?之后出现了:臫;这时图片只能显示第一部分。
正确显示图片相应部分:顈?|1妣U婶臫Zct\喪YN2=馴V;这里结合处由:?臫,变成了:婶臫,婶占两个字节,?占一个,所以我怀疑有数据丢失,所以导致图片合并出问题!
请问各位高手可曾遇到类似问题?或者有什么解决方法?
请多多指教!

  • 打赏
  • 举报
回复
那你就不要回车了,没事的。
我base64编码的时候就不给回车。
baby393 2008-03-04
  • 打赏
  • 举报
回复
BASE64是不需要给回车的, 回车不是BASE64的合法编码!
yyunffu 2008-03-04
  • 打赏
  • 举报
回复
服务器端是放进数据库里面的,读出数据大小到是正确,只是合并时老出问题;而且奇怪的是与客户端分割大小有关,有些可以,有些不可以;比如我分割为210K一部分就不会出任何问题,但是200K就不行!
我遵照楼上指点,好好看一下!
  • 打赏
  • 举报
回复
首先你将服务器收到的文件,和本地文件用二进制比对一下。
看看有分歧的是那些部分,
yyunffu 2008-03-04
  • 打赏
  • 举报
回复
用二进制方式打开也不能解决,不知道问题出在哪里,望大家多多指点!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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