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]