我在用Qt中使用AES加密解密中文乱码问题

wanghs___ 2015-04-17 01:40:10
数据是在tcp网络传输的,对于QString中的英文字符串加密解密正常,但是中文加密解密就出现乱码,怎么解决,求大神指点
...全文
586 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghs___ 2015-04-22
  • 打赏
  • 举报
回复
我的问题已经解决了,谢谢各位了.主要问题在于QString类和QByteArray类的区别,在处理QString类中汉字都是单独处理的,与英文字母是一样的了,不再占两个字节,QByteArray类与C中的字符串数组一样了
赵4老师 2015-04-20
  • 打赏
  • 举报
回复
引用 2 楼 wanghs___ 的回复:
我怎么看不懂呢,zhao4zhong1
等你看懂的时候,问题也就随之消失了。
fly_dragon_fly 2015-04-20
  • 打赏
  • 举报
回复
QString内部用的unicode存储,而在右边为char *赋值时,它认为这是utf8,检查一下这地方有没有问题
707wk 2015-04-17
  • 打赏
  • 举报
回复
http://tgstdj.blog.163.com/blog/static/748200402013213105251450/
wanghs___ 2015-04-17
  • 打赏
  • 举报
回复
我怎么看不懂呢,zhao4zhong1
赵4老师 2015-04-17
  • 打赏
  • 举报
回复
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
void HexDump(char *buf,int len,int addr) {
    int i,j,k;
    char binstr[80];

    for (i=0;i<len;i++) {
        if (0==(i%16)) {
            sprintf(binstr,"%08x -",i+addr);
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        } else if (15==(i%16)) {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
            sprintf(binstr,"%s  ",binstr);
            for (j=i-15;j<=i;j++) {
                sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
            }
            printf("%s\n",binstr);
        } else {
            sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);
        }
    }
    if (0!=(i%16)) {
        k=16-(i%16);
        for (j=0;j<k;j++) {
            sprintf(binstr,"%s   ",binstr);
        }
        sprintf(binstr,"%s  ",binstr);
        k=16-k;
        for (j=i-k;j<i;j++) {
            sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');
        }
        printf("%s\n",binstr);
    }
}

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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