BASE64解码之中文乱码问题

本文探讨了BASE64解码时出现中文乱码的问题,主要原因是编码后的数据每76个字符添加了回车换行符' '。解决方法是在解码前删除这些字符。通过查看数据的16进制表示,可以确认是否存在导致乱码的回车换行符。提供了C++代码示例来删除回车换行符。
摘要由CSDN通过智能技术生成

RFC2045中有规定:
The encoded output stream must be represented in lines of no more than 76 characters each.
Base64一行不能超过76字符,超过则添加回车换行符。

经过base64编码后的数据,每隔76个字符,有回车换行符“\r\n”,’\r’和‘\n’各占一个字节。所以在解码数据之前,先删除数据中的回车换行符,即可解决因回车换行符而导致的乱码问题。

回车换行符因素导致乱码的确定:

可以将拿到的数据转成16进制打印出来,查看是否存在回车换行符’\r’ ‘\n’在ASCII码表中所对应的16进制数 0x0D 0x0A.

以下为删除回车换行符 C++ 代码:
 string s = "yangdiao\r\nyangdiaoyangdiao";
 int pszLen = s.length();

 char *a = new char[pszLen+1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值