CSV文件导入数据库中文乱码(已解决)

做好的CSV直接导入数据库,中文是这样的

��������ʨ��һ��������è�Ĵ����

目前的解决办法,粗暴简单

  1. 把.csv后缀改成.txt
  2. 打开txt,选择另存为,编码方式改成UTF-8
  3. 把.txt后缀改为.csv
  4. 导入,成功!

为啥Excel就不能直觉保存UTF-8呢,它都那么强大了

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
如果你的 CSV 文件中包含中文字符,而在导入到 Qt 中后出现了乱码问题,可能是因为你没有正确地设置文件编码。你可以尝试以下几种方法: 1. 在打开 CSV 文件时,使用 QTextCodec::codecForName() 函数指定正确的编码方式。例如: ``` QFile file("data.csv"); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); in.setCodec("UTF-8"); // 指定编码方式 while (!in.atEnd()) { QString line = in.readLine(); // 处理每行数据 } file.close(); } ``` 2. 如果你使用的是 QTableView 控件来展示数据,可以在设置数据模型时,指定模型的编码方式。例如: ``` QStandardItemModel *model = new QStandardItemModel(); model->setHorizontalHeaderLabels(headers); // 设置表头 model->setRowCount(rows); // 设置行数 model->setColumnCount(cols); // 设置列数 QFile file("data.csv"); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); in.setCodec("UTF-8"); // 指定编码方式 int row = 0; while (!in.atEnd()) { QString line = in.readLine(); QStringList fields = line.split(","); // 根据逗号分隔每个字段 for (int col = 0; col < cols; col++) { QStandardItem *item = new QStandardItem(fields[col]); model->setItem(row, col, item); } row++; } file.close(); } ui->tableView->setModel(model); // 设置数据模型 ``` 3. 如果你使用的是 QSqlTableModel 来操作数据库,可以在创建数据库连接时,指定连接的编码方式。例如: ``` QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("mydb"); db.setUserName("myuser"); db.setPassword("mypassword"); db.setPort(3306); db.setConnectOptions("MYSQL_OPT_RECONNECT=1"); db.setConnectOptions("MYSQL_OPT_CHARSET_NAME=utf8"); // 指定编码方式 if (!db.open()) { qDebug() << "Failed to connect to database"; return; } QSqlTableModel *model = new QSqlTableModel(); model->setTable("mytable"); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->select(); ui->tableView->setModel(model); ``` 希望以上方法可以帮助你解决中文乱码问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

immocha

人生得意须尽欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值