Qt 操作 Oracle 时的汉字乱码问题,说实话挺常见的,尤其是字符集对不上的时候。搞不定的话,查询结果里的中文就全成了“口口”。我这儿有两个方案,简单好上手的一个是在程序开头直接用QTextCodec把编码定死成 GBK,这样 Qt 本地字符串时就老老实实按 GBK 走了。

另一个方案就稍微硬核点,要动 Qt 源码。去qsql_oci.cpp里把#define QOCI_NO_CHARSET_CONVERSION的注释去掉,重新编 Qt 库,这样 Oracle 字符集就不再自动转了。适合那种你对源码不怕下手的人。

平时用的时候,比如你查 Oracle 中文数据,可以先用QTextCodec转成 UTF-8 再显示,这样界面上就稳了。如果你经常跟 Oracle 打交道,建议先试方法一,快准省事;真不行再上方法二。