在Qt 4.8中,这工作正常。
QString test =“这是特殊字符'sk'的测试信息@#$%^& *()”; qDebug()<<“test message”; qDebug()<<测试
但是在QT 5.9中我得到了替换字符。
Qt 4.8中的输出
测试消息这是特殊字符'sk'的测试消息@#$%^& *()
但是在Qt 5.9我得到了 这个输出
测试消息这是特殊字符的测试消息 sk @#$%^& *()
Qt 5.9有什么问题?有什么修复可用吗?
答案 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;