Qt的程序显示中文乱码

我用Qt写一个中文转ASCII,ASCII转中文的程序,转成ASCII在旁边转出来就出错了,显示乱码,怎么解决?

img

看一下你的代码,怎么实现的? 什么编译器 Mingw 还是 MSVC, MSVC 在处理中文那个文件加上

#pragma execution_character_set("utf-8")
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7544291
  • 你也可以参考下这篇文章:【QT】用串口发送ASCII字符串与数字的拼接
  • 除此之外, 这篇博客: Qt字节数组和十六进制的相互转换 中的 6.判断字符串是ascii还是16进制 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • QString str;
    str.contains(QRegExp("^[A-Fa-f0-9]+$"));//true则是16进制  false则是ascii

     

  • 以下回答由chatgpt基于相关博客总结生成:

    我认为这个问题的可能原因是编码不一致导致的。在Qt中,QString和QByteArray都提供了toAscii()和fromAscii()函数,可以用于ASCII码和QString之间的转换。但是,在处理中文字符时,推荐使用Unicode编码,这样可以支持更多的字符集。

    解决方案如下:

    1. 将中文转换为Unicode编码

    可以使用QString类的toUtf8()函数将中文字符串转换为Unicode编码的字节序列。示例代码如下:

    QString chinese = QString::fromUtf8("你好,世界!"); QByteArray unicode = chinese.toUtf8();

    1. 将Unicode编码转换为ASCII码

    可以直接使用QByteArray类的toHex()函数将Unicode字节序列转换为16进制表示的ASCII码字符串。示例代码如下:

    QByteArray ascii = unicode.toHex();

    1. 将ASCII码转换为Unicode编码

    可以直接使用QByteArray类的fromHex()函数将ASCII码字符串转换为Unicode字节序列。示例代码如下:

    QByteArray ascii = QByteArray::fromHex("E4BDA0E5A5BDEFBC8CE4B896E7958C21"); QString chinese = QString::fromUtf8(unicode);

    1. 将Unicode编码转换为中文

    可以使用QString类的fromUtf8()函数将Unicode字节序列转换为中文字符串。示例代码如下:

    QString chinese = QString::fromUtf8(unicode);

    注意:如果你在Windows下开发,建议将编码格式设置为UTF-8,以避免中文乱码问题。可以在Qt Creator中的工具->选项->文本编辑器->文件编码中进行设置。

    如果以上解决方案不能解决你的问题,建议你查看一下程序输出的字符编码是否与你想要的一致。可以使用以下代码打印输出编码格式:

    QTextCodec *codec = QTextCodec::codecForName("UTF-8"); qDebug() << codec->name();