C++ 从Excel到utf-8 mysql的字符串
我正在编写一些软件,从XLS文件中提取行并将其插入数据库 在OpenOffice中,单元格如下所示:C++ 从Excel到utf-8 mysql的字符串,c++,excel,utf-8,C++,Excel,Utf 8,我正在编写一些软件,从XLS文件中提取行并将其插入数据库 在OpenOffice中,单元格如下所示: Brunner Straße, Parzelle Brunner Stra 我正在使用CodeProject中的ExcelFormat库 int type = cell->Type(); cout << "Cell contains " << type << endl; const char* cellCharPtr = cell->GetSt
Brunner Straße, Parzelle
Brunner Stra
我正在使用CodeProject中的ExcelFormat库
int type = cell->Type();
cout << "Cell contains " << type << endl;
const char* cellCharPtr = cell->GetString();
if (cellCharPtr != 0) {
value.assign(cellCharPtr);
cout << "normal string -> " << value << endl;
}
我使用mysql cpp连接器将其插入数据库,如下所示:
prep_stmt = con -> prepareStatement ("INSERT INTO "
+ tablename
+ "(crdate, jobid, imprownum, impid, impname, imppostcode, impcity, impstreet, imprest, imperror, imperrorstate)"
+ " VALUES(?,?,?,?,?,?,?,?,?,?,?)");
<...snip...>
prep_stmt->setString(8,vals["street"]);
<...snip...>
prep_stmt->execute();
这很烦人
当从xls文件检索字符串时,如何确保文件所在的任何语言环境都转换为utf-8
这将作为web服务的后端运行,客户端可以上载自己的excel文件,因此“在Libre Office中更改文件的编码”恐怕无法工作。您的输入似乎是用拉丁语编码的,因此您需要将mysql“connection charset”设置为
latin1
我不熟悉您用来连接MySQL的API。在其他API中,您可以向连接URL添加charset=latin1
,或者调用API函数来设置连接编码
或者,您可以在将输入输入输入到MySQL之前对其重新编码。请打印字符串字节数组的十六进制值好吗?用十六进制值更新了问题。
ffffff df
显然不是ASCII,也不是UTF-8。我打赌是拉丁语-1,但符号扩展。您是否也可以包含将字符串插入数据库的代码?十六进制值看起来像iso-8859-1,但utf8\u general\u ci排序规则似乎被\0s不正确地截断。好的,我已经添加了db插入代码,我根据配置参数重新编码了输入,所以我接受这一点。
Brunner Stra