QString在QT 5.9显示单引号时显示垃圾值

时间:2017-09-29 09:28:43

标签: qt qstring

在Qt 4.8中,这工作正常。

  

QString test =“这是特殊字符'sk'的测试信息@#$%^& *()”;      qDebug()<<“test message”;    qDebug()<<测试

但是在QT 5.9中我得到了替换字符。

Qt 4.8中的输出

  

测试消息这是特殊字符'sk'的测试消息@#$%^& *()

但是在Qt 5.9我得到了 这个输出

  

测试消息这是特殊字符的测试消息 sk @#$%^& *()

Qt 5.9有什么问题?有什么修复可用吗?

1 个答案:

答案 0 :(得分:1)

对于8位字符串常量,它们通常由编译器转换为ascii,因此即使源代码可能允许某些字符并不意味着它将起作用。刚刚用Qt 5.9和Visual Studio 2017进行了快速测试。你描述了同样的问题,但当你强制使用u8前缀的8位字符串为utf8时,它可以工作。

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