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被另外一个程序调用的时候,遇