Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QString在Qt5.9中显示垃圾值,同时显示单引号_Qt_Qstring - Fatal编程技术网

QString在Qt5.9中显示垃圾值,同时显示单引号

QString在Qt5.9中显示垃圾值,同时显示单引号,qt,qstring,Qt,Qstring,在Qt4.8中,这工作正常 QString test=这是特殊字符“sk”@$%^&*的测试消息; qDebug对于8位字符串常量,编译器通常会将它们转换为ascii,因此即使源代码允许某些字符,也不意味着它可以工作。刚刚用Qt 5.9和Visual Studio 2017进行了快速测试。与您描述的问题相同,但当您强制8位字符串为utf8,并带有u8前缀时,它会起作用 QString test = u8"this is a test message for special characters

在Qt4.8中,这工作正常

QString test=这是特殊字符“sk”@$%^&*的测试消息;
qDebug对于8位字符串常量,编译器通常会将它们转换为ascii,因此即使源代码允许某些字符,也不意味着它可以工作。刚刚用Qt 5.9和Visual Studio 2017进行了快速测试。与您描述的问题相同,但当您强制8位字符串为utf8,并带有u8前缀时,它会起作用

QString test = u8"this is a test message for special characters ‘sk’ @#$%^&*()"; 
qDebug()<<"test message"; 
qDebug()<< test;

嗯,'和'是不同的字符。你们期待什么?我只想像在上一个版本中一样用单引号打印消息。在Qt 5.9中是否可能发生这种情况?您确定更换件在QString中吗?我想可能是QDebug无法处理这些字符:它们不是ASCII。我在调试模式下尝试了它,并将其设置为文本以QLabel,结果仍然相同。所以我不认为这是qDebug的问题。在将字符串转换为QByteArray时,它显示为'as\xef\xbf\xbd',在此链接中,它以替换字符的形式给出。请注意,Qt 4和5之间的一个主要变化是QStringconst char*构造函数采用的编码。在Qt 5中,它必须是UTF-8。在Qt4中,使用了本地编码。将源文件重新编码为UTF-8,或使用u8字符串文本从输入字符集生成UTF-8序列。