解决:Error: Could not decode “*.cpp“ with “UTF-8“ - encoding. Editing not possible

当文件从Windows传输到Ubuntu后出现乱码,主要是由于编码不一致导致的。解决步骤包括检查文件编码,如果含有UTF-8则选择,否则选择System(在Windows中通常为GBK)。若两者都未找到,可尝试GBK或相近编码如GBK/windows-936-2000/CP936/MS936/windows-936。确保在Ubuntu环境中设置正确的文件编码以避免乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
点击 【select encoding】,如下,如果有 UTF-8,就选择 UTF-8, 没有的话,就选择,System, 然后【按编码重新载入】,就解决了。

如果没有找到uft-8或者system,选中:GBK/windows-936-2000/CP936/MS936/windows-936)
在这里插入图片描述

tip:

  • 文件从window上传到Ubuntu后会显示乱码,原因是因为ubuntu环境设置默认是utf-8,Windows默认都是GBK.
  • Windows环境下,Qt Creator,菜单->工具->选项->文本编辑器->行为->文件编码:默认编码:System(简体中文windows系统默认指的是GBK编码,即下拉框选项里的GBK/windows-936-2000/CP936/MS936/windows-936)

参考:https://blog.youkuaiyun.com/libaineu2004/article/details/19245205

这个错误表明Qt在尝试解码一个字符串时失败了,具体是因为使用了"utf-8"编码格式,但提供的字符串可能不是合法的UTF-8编码。这通常发生在处理文件读取、网络数据接收或者跨平台传输数据时。 ### 解决方案 #### 方法1:确保输入是合法的UTF-8编码 如果你知道数据源应该是UTF-8编码的,那么需要检查数据源是否被正确地编码。例如,如果你从文件中读取数据,确保文件保存时选择了UTF-8编码。 #### 方法2:尝试其他编码格式 如果不确定数据的编码格式,可以尝试使用其他常见的编码格式(如ISO-8859-1或Latin-1)来解码数据。 以下是一个示例代码,展示如何在Qt中使用不同的编码格式来解码字符串: ```cpp #include <QTextCodec> #include <QString> #include <QDebug> void decodeString(const QByteArray &data) { // 尝试使用UTF-8解码 QTextCodec *codecUtf8 = QTextCodec::codecForName("UTF-8"); QString utf8String = codecUtf8->toUnicode(data); if (utf8String.isEmpty()) { qDebug() << "Failed to decode with UTF-8"; } else { qDebug() << "Decoded with UTF-8:" << utf8String; } // 如果UTF-8失败,尝试使用ISO-8859-1解码 QTextCodec *codecLatin1 = QTextCodec::codecForName("ISO-8859-1"); QString latin1String = codecLatin1->toUnicode(data); qDebug() << "Decoded with ISO-8859-1:" << latin1String; } int main(int argc, char *argv[]) { QByteArray data = "你的非UTF-8编码字符串"; // 替换为实际数据 decodeString(data); return 0; } ``` #### 代码解释 1. **QTextCodec** 是Qt中的类,用于处理不同字符编码之间的转换。 2. **codecForName("UTF-8")** 创建了一个针对UTF-8编码的解码器。 3. **toUnicode(data)** 将字节数组 `data` 转换为QString。如果数据不是合法的UTF-8编码,结果可能是空字符串。 4. 如果UTF-8解码失败,尝试使用ISO-8859-1编码进行解码。 ### 方法3:修复数据源问题 如果数据源本身有问题(例如文件损坏或网络传输中断),需要从源头解决问题。例如: - 检查文件是否正确保存为UTF-8格式。 - 确保网络传输过程中没有数据丢失或篡改。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值