就好像我上面所说的,你要保证源代码转换后的中文是正确的编码。你估计是 msvc 编译的吧。那货默认 gbk 编码,但 tr 不知道,转换后到内存里面的文字可能就乱码了。
办法好几个,不过不具可移植性。我现在的实践,不在字符串常量中出现中文。你用 python 转一下:
goldfish@laptop ~> python3
Python 3.4.6 (default, Mar 22 2017, 12:26:13) [GCC] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> "中文表名".encode("utf-8")
b'\xe4\xb8\xad\xe6\x96\x87\xe8\xa1\xa8\xe5\x90\x8d'
拿输出的那个 \xe4\xb8... 替换“中文表名”四个字看看。
【 在 luliku (陆里) 的大作中提到: 】
: 谢谢,我使用的数据库是SQLServer2014,他是支持中文表名的,我的意思是我在用Qt连接上数据库后用下面的语句读取数据时能连接上数据库,但无法读取数据,可能就是下面语句中的“中文表名”书写不正确,但我不清楚该怎么写
: model->setQuery(QObject::tr("select * from 中文表名 where StartTime>='2017/11/22 16:02:30' and StartTime<='2017/11/26 16:05:30'"));