求问 Qt5 QString 中文转到 string 或 char* 的方法

最近用Qt写HTTP服务端,用的QTcpSocket发送信息。
但是在返回 响应头的时候:
图片说明
作为实验,我的HTML就四个 "啊啊啊啊"
于是开始转换,可是转换之后出现以下现象:
图片说明
string类型变量 tmpa 出现乱码,我知道应该使用 Wstring,但是QTcpSocket->write 不准许用宽字节。

于是将这个乱码发送出去,最后浏览器收到值:
图片说明
原本的四个 啊 变成了 一个啊。缺少了 三个字符。
这种情况是因为char每个中文字需要两个char类型,除非使用宽字节。尝试了网上大部分方法,都没有正确的方法。

这种情况以前发生过在中文char转换到QString。我用的是 QString(QString::fromlocal8bit(char)); 来进行解决的。但是反过来我就不知道,尝试过 tolocal8bit,但是无用依然乱码。

如果有知道的大神还望指点。。。。

0

1个回答

-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
QT QString 转 char* 中文乱码问题
最近,QT项目遇到这样一个问题:    1.将某个 QString 变量转换成 char * 变量。    2.将char * 变量 转换成 QString 。然后,测试发现,如果第一步的QString含中文,那么,得到的char * 变量就会乱码。部分代码如下:main()函数中设置编码:QTextCodec::setCodecForTr(QTextCodec::codecForName("ut...
【Qt】QString中文转C++ char*乱码问题
QString().toStdString().c_str()转出的char*字符串,如果是英文不会出问题,但是如果QString含有中文字符,就会出现乱码nn nn解决方法:nnQByteArray ba=QString().toLocal8Bit();nnchar *str=ba.data();nn nnPS:nn不能一步写成 char *str=QString().toLocal8Bit()...
Qt中QString转string中文乱码问题
QString与string相互转换可以用如下方法:QString::toStdString();nQString::fromStdString();数字转QString:QString::number();然而QString直接与string相互转换会出现中文乱码问题,为此Qt4中提供了三条语句QTextCodec::setCodecForTr(QTextCodec::codecForName("
Qt QString转Char*传送中文参数编码问题
开发环境:VS2010+qt4.8.7n开发对象:qtActivex 网页插件n在VS2010中,经过上网查询及本地用NotePad+打开cpp文件,验证了VS2010默认的编辑格式是UTF-8。插件要将中文参数转为字符数组与底层交互,存取参数时发现,串口输出需要Ascii编码格式。于是将cpp保存为ASCII格式,并做如下尝试:n1、QTextCodec::setCodecForTr(QT
QT学习之路九(QString、string和char*之间的转换)
今天总结一下qt和std c++各种数据类型的转换nn一、QString和char*nn  1、QString转化为QByteArray类型,然后由QByteArray再转化为char*    例:nnQString dome0; nchar dome1[20]; nQByteArray dome2 = dome0.toLocal8Bit(); nstrcpy(dome1, do
QString包含中文时与char *转换
方法1:nn添加GBK编码支持:nnn#include <QTextCodec>nnQTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));nQTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));nnQString str;nchar *ch;nQByt...
QString、String、char*之间转换总结
一、QString与Stringnn1)QString转Stringnstring a; nQString b; na= b.toStdstring(); //jwhu 括弧内多余nn2)string转QStringnstring a; nQString b; nb= QString::fromestdstring(a); nn二、QString和char*nn1)QS
QT中 QString 、String与char*三者之间相互转换
n把QString 转化为 char* nnnn思路:nnn 1.先把QString类型变为QByteArray类型 n 2.从QByteArray类型再转为char* 类型 nnnnnn例子nnQString qStr = "两袖清风";nQByteArray qByteArray = qStr.toUtf8();nchar* cStr = qByteArray.data();nqDeb...
qt 的qstring转string到char一直崩溃
rnstrncpy(CFtp::m_tFtpInfor.szIpBuf, (const char *)iniSetting.value("FTP/ip", "127.0.0.1").toString().toStdString().c_str(), 32);rnrnrn这样一直崩溃,可能是字符格式引起的,改为下面的就可以了rnstrncpy(CFtp::m_tFtpInfor.szIpBuf,
QT 将含有中文字符的QString转化为char*类型
网上的很多博客推荐的方法,QT5都不再支持或者只支持将只含有英文的QString转化为char*类型,这里贴上能把含有中文字符的QString转化为char*.
Qt学习路程(四)QString转char[]数组
这个问题是我在项目中遇见最简单,却调试时间最长的一个问题。nn下面我把我的解决方法发出来供大家参考。nn这是结构体定义。nnn n typedef struct PersonData{n int use_id;n char name[10];n int passwd;n int passwds;n int money;n int flag;n ...
QT入门系列(5):QString与QByteArray相互转换方法
QString转QByteArray,QT5中已把QString.toAscii()函数移除,并过渡到使用toLatin1()nQByteArray转QString
QT中QString与string的转化,解决中文乱码问题
在QT中,使用QString输出到控件进行显示时,经常会出现中文乱码,网上查了一圈,发现大部分都是针对QT4增加4条语句:nnnnnQTextCodec *codec = QTextCodec::codecForName("UTF-8");nnQTextCodec::setCodecForTr(codec);nnQTextCodec::setCodecForLocale(codec);
QString与char *的相互转换
1.QString 转换为 char *    将 QString 转 char *,需要用到 QByteArray 类 。因为 char * 最后都有一个'\0'作为结束符,而采用 QString::toLatin1() 时会在字符串后面加上'\0'。(1).中文字符串转char*:#include <QTextCodec>nnQTextCodec::setCodecForTr(QT...
QString与char*相互转换
在混合编程时,经常遇到QString与char*之间的相互转换,有时候忘记了就去网上查,一查就有很多资料可看。不过今天还是来单看一下这两种类型的区别以及QByteArray类,顺便记录一下如何转换,免得每次忘了都要重新上网查。nn1.char*转QStringnn去看QString的帮助手册,发现QString存储16位QChar类型数据,QByteArray存储原始数据或8位以'/0'结束符的字...
从unsigned char*(含有中文)转化为QString时出现乱码的解决方案
本文由Markdown语法编辑器编辑完成。1. 问题提出:2. 解决方案:I encode a string using Blowfish algorithm and it saves the encoded string as an unsigned char *,and now I have to convert it to QString, i tried the following and
计算QString的长度
QFont myFont;nQString str("I wonder how wide this is?");QFontMetrics fm(myFont);nint width=fm.width(str);
关于Qt中遇到qDebug输出QString时输出Unicode码问题的解决与总结
本人使用的是Qt5.5,使用qDebug输出信息是遇到中文输出为Unicode码,rn到处查资料无果。有人说是Qt5.5的bug,Qt搞得不精。rn使用qDebug过程中发现rnQString a("你好");rnrnqDebug()rn在上述代码中,“中文”能够正常输出,但是a中的“你好”以unicode的格式输出。rn所以,解决方案来了,将QString装换为“中文”的格式,而“中文”是以ch
【Qt】QString,std::string,char中文字符互相转换
关于QString显示中文字符不乱码的问题,参见:http://blog.csdn.net/shihoongbo/article/details/47677159rnrnrn#include n#include n#include n#include n#include nnstd::string QString2stdString(QString qstr)n{n std::string std
QT之QString转char*之后乱码
QString name = “hello”;rn QByteArray ba = name.toLocal8Bit();rn char *selectlayername = ba.data();
QString如何转换成const char类型
QString如何转换成const char类型nn        因为从QLineEdit中获取的字符串为QString类型, 但是想利用系统调用新建一个目录,然而,系统调用system(const char *)中必须为const char类型,如何把QString转换为char呢?下面的代码就可以实现。nnQString copycommand = ...;nnconst char *c_c...
解决你的乱码难题(Qt转码与char和utf8的互转)
在跨平台的开发中,字符串的转码显得相当重要,稍有不慎,将会出现乱码的情况,在这里,首先说一下Qt的QString中几个关于转码的函数:nn(1)QByteArray toUtf8() const;nn(2)std::string toStdString() const;nn(3)QByteArray toLocal8Bit() const;nnnnn(4)QString fr
Qt json解析含有中文的member,Qt中QString,int,char *互相转换的问题
QT中QString ,int ,char*互相转换的问题nn nn nn nnQString转intnnQString str;nnint type = str.toInt();nn nnint转QStringnnint type;nnQString str = QString::number(type,10);nn nnQString转floatnnQStirng str;nnfloat f ...
Qt设置为GBK/System编码时,QString转char*乱码问题
这个问题以前遇到过,结果后来忘了,今天遇到中文路径用FILE写文件,结果文件名乱码。QString转换char*方式:QString str=QString::fromLocal8Bit("中文");//我QtCreator本地设置的是System/GBKQByteArray arr= str.toLocal8Bit();  //我不知道为嘛非要有中间变量,搞得我一直没弄对const char *...
【Qt5】QString 转 LPCSTR亲测有效
网上太多假的真难受nnnQString q_str = "ffmpeg";nLPCSTR c_str = (LPCSTR)q_str.toLocal8Bit();nn效果图:nnnn
关于 string转const char* 过程中中文乱码问题,GDAL
刚开始用GDAL,输出路径 是由string转到const char*的,但发现汉字总是乱码,比较懵逼,第一次遇见这种问题,调试模式下代码神奇的跟不进去,显示找不到文件之类的,  ,查了近两个小时,一直以为是环境错了或者库有问题,最后经过多次排查才发现是GDAL默认不支持中文,需要把   CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");  这一句加...
《Qt数据类型》--基本数据类型QByteArray,QString,char,byte之间的转换
在上位机通讯中,根据通讯协议,有时候需要发送16进制的数据,本人在编程的时候容易把各种数据字面值和实际值搞混淆,故写这篇文章给大家参考,也给自己提醒。n在Qt中串口的接收和发送的数据类型都是QByteArray,因此我们需要在通讯的双方进行数据转换,此时我们根据通讯协议,有的设备接收字符串,而有的设备接收16进制的数据。n一般我们发送16进制的数据时使用长度为一个字节的数据类型,比如char,
QT Qstring Qt中文编码和QString类Unicode编码转换
1 window中文GBK编码和Unicode编码转换n//GBK‐> QStringnQString str = QString::fromLocal8Bit("新浪微博");n//QString ‐> GBKnQString text = ui.lineEdit‐>text();nQByteArray bytes = text.toLocal8Bit();nconst char* gbk =
VS2015,qt 5.7.1,编译使用QString的toWCharArray时出现无法解析的toWCharArray(unsigned char*)的问题,无法正确识别WChar_t类型
VS2015,qt 5.7.1,LNK200,无法解析的toWCharArray(unsigned char*)问题,即无法正确识别WChar_t类型,如图:解决:进入工程属性,C/C++    -->>   语言   -->>  将WChar_t视为内置类型   -->>  将否改为是,重新编译解决。...
QString如何转化为char * ?
QString没有提供直接转换的成员函数,所以得借助外力来解决,方法如下:nn nn1、利用std::string作为桥梁nn首先,使用QString的成员函数toStdString(),然后再利用std::string的c_str()函数,示例:nnQString string1;nnchar string2[32];nnstd::string string3 = string1.toStdSt...
Qt学习笔记(QAction,QString格式化输出)
在编写界面程序时经常会用到单选项或者复选项,界面按钮方式可以采用QCheckBox、QRadioButton配合QGroupBox实现。如果采用Qt设计师设计界面时,很容易达到这样的效果。而另一种情况是采用菜单项实现,而菜单栏实现单选或者多选一般采用QAction实现。rn使用QAction实现单选的方法:将多个QAction添加到QActionGroup,并将QActionGroup设置为exc
QJsonObject与QString的相互转换(处理了中文乱码)
1.QString转QJsonObjectnnnQJsonObject convertQStringToQJsonObject(const QString jsonString)n{ n QTextCodec *tc = QTextCodec::codecForName("UTF-8");//防止中文乱码n QJsonDocument jsonDocument = QJsonDocument::f...
Qt5 常量中有换行符
1、用记事本打开你的源代码,然后点另存为,utf-8,编码覆盖,这时中文就没问题了但是会乱码。rn2、在字符串前加个宏QStringLiteral把字符串扩起来;这样字符串就不会乱码了。
QT5中Qstring与数字(int float )问题
QString转数字 :rnQString.toInt(int s  );//其余以此类推rnrnrn数字转QStringrnrnrnrnrnQString.setNum(XXXX);//setNum为重载函数
关于QString的中文乱码的问题,可以试试这个。
秉承具体问题具体分析的原则,先表明使用的环境是qt5.0以上,编译器是vs2013以上,文件是utf-8有签名版。nn遇到在cpp里的QString类型包含中文被用于界面值显示的时候,出现了乱码,在网上搜了一下,推荐是用tostdstring(),此时会出现类型转换错误,使用tolocal8Bit()转换两次也是一样乱码。nn关于QString中文乱码的问题搜了很多,可能他们所推荐的方法在他们项目...
Qt5学习记录(1):QString与int值互相转换
1)QString转intrn直接调用toInt()函数rn例:rnQString str("100");rnint tmp = str.toInt();rnrnrn或者:rnrnbool ok;rnQString str("100");rnint tmp = str.toInt(&ok);rn注:ok表示转换是否成功,成功则ok为true,失败则ok为false。rn2)int转QStringr
Qt学习(6)——Qt5中的String总结
参考: n[1]http://zetcode.com/gui/qt5/strings/ n[2]http://blog.csdn.net/beyond_zhangna/article/details/79277378(包含示例一~示例三) n[3]http://blog.csdn.net/beyond_zhangna/article/details/79301067(包含示例四~示例六) n[4]...
QString和std::string转换乱码的解决方法
std::string cstring;nQString qstring;n//从std::string 到QStringnqstring = QString(QString::fromLocal8Bit(cstring.c_str()));n//从QString 到 std::stringncstring = std::string((const char *)qstring.toLocal8...
QT5中Json文件与QString的相互转化
nQJsonObject MainWindow::QstringToJson(QString jsonString)n{n QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonString.toLocal8Bit().data());n if(jsonDocument.isNull())n {n qDeb...
Qt中获取字符串中的汉字
//提取字符串中的中文字符串nQString myFile::getChinese(QString &str)n{n // QString str;n QString chineseStr;n int nCount = str.count();n for(int i = 0 ; i < nCount ; i++)n {n QChar cha = st
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 问果大数据学院 qt5对应python教程