QNetworkRequest数据中 汉字的处理

在使用QNetworkReply获取网络数据时,遇到汉字编码问题。原始QByteArray中汉字占用3个字节,通过QTextCodec转为UTF-8字符串。但在Json::Reader解析时,需要保持原始字节格式,直接使用QString构造即可避免汉字显示问题。
摘要由CSDN通过智能技术生成
使用 QNetworkReply* m_pNetworkReply; //封装请求返回信息


  m_pNetworkReply获取网络得到的数据
  
  QByteArray resultContent = m_pNetworkReply->readAll();
   
    // 假如 resultContent为字符串 "张三78zn"
    //则 resultContent的长度为 2*3+2+2 =10,即汉字占用了三个字节!


    QTextCodec* pCodec = QTextCodec::codecForName("UTF-8");
    QString strResult = pCodec->toUnicode(resultContent);
    //经过处理之后 strResult 的长度为 6个字节 
    //此时用 QMessageBox 打印可以完整的看到 张三78zn 
    
    
    若调用 
       Json::Reader reader;
        Json::Value value;


        if (reader.parse(strResult.toStdString(), value))
        {
           //  printf("Started Parse \n\n\n");
         
QNetworkRequest是一个类,用于在网络上发送请求。它包含了请求的URL和一些附加信息,可以用来修改请求的行为。QNetworkRequest的属性可以用来控制请求的行为,并且可以通过应答传递更多的信息到应用程序。属性是可扩展的,允许自定义实现来传递自定义的值。QNetworkRequest还包含了一些枚举类型,如Attribute、CacheLoadControl、KnownHeaders、LoadControl和Priority,用于指定请求的属性和优先级。其,CacheLoadControl枚举类型用于控制QNetworkAccessManager的缓存机制,包括AlwaysNetwork、PreferNetwork、PreferCache和AlwaysCache四个选项。TransferTimeoutConstant枚举类型用于设置传输超时的常量值,包括DefaultTransferTimeoutConstant选项。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Qt网络编程之QNetworkRequest](https://blog.csdn.net/chenlong12580/article/details/7392614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Qt网络编程:QNetworkRequest](https://blog.csdn.net/kenfan1647/article/details/118279141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值