QT连接Sqlite数据库,中文路径出错

在使用QT连接SQLite数据库时,如果数据库路径包含中文,可能会遇到错误。本文介绍了作者在VS2010环境下,针对Unicode编码的QT DLL如何处理中文路径问题。关键在于理解Unicode(如UTF-16)和Multi-Byte(如UTF-8)编码的区别,并在DLL接口中正确转换编码格式,确保单字节和宽字节编码的对应。解决方法包括在DLL内部将数据库路径转换为GB18030编码,以及调用程序根据其编码类型(Unicode或Multi-Byte)调整传递的路径格式。
摘要由CSDN通过智能技术生成

QT对中文的支持是一个很让人头疼的问题,前些天修改了一个连接Sqlite数据库,数据库中文路径出错,现在把怎么解决的做一些记录。
这里写图片描述
我用的是vs2010,首先确定自己用的是Multi-Byte还是UNICODE编码,这两种编码直接决定调用windows的API的时候用的是A版还是MB版,这里以下面这段代码为例子。

#ifdef UNICODE
#define GetModuleFileName  GetModuleFileNameW
#else
#define GetModuleFileName  GetModuleFileNameA
#endif // !UNICODE

可以看到,我们用UNICODE编码,调用GetModuleFileName时,其实用的是GetModuleFileNameA这个函数。那么这两个函数有什么却别呢,这就要说到宽字节,跟单字节的区别,UNICODE编码格式的字符串,都是宽字节的,用wchar_t表示。我的理解,UNICODE一般指的是utf16或者utf32,而Multi-Byte一般指的是utf-8.
我用qt写了一个访问sqlite的dll, 采用unicode编码格式。 这个dll被另外一个程序调用的时候,遇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值