OCI sql 语句包含中文,读不到数据

OCI sql 语句包含中文,读不到数据, 把中文改成英语,就可以。

编码不一致导致的~!utf-8 和 gbk

NLS_LANG=AMERICAN_AMERICA.AL32UTF8

环境变量的问题,添加上面的环境变量试试

谢谢,我试试, 不过我用 Oracle SQL Develop 工具,直接输入包含中文 的sql 语句 是可以的, 但是在C++ 代码用 OCI 就不行, 过程是OCIEnvCreate OCIHandleAlloc OCIServerAttach OCIStmtPrepare OCIDefineByPos OCIAttrGet OCIStmtExecute

语句中的编码出问题了吧

我发的那个变量,值不一定是那个,你看一下你库的编码是什么,两边一致就行,应该是编码不同造成的

环境变量不行的,应该不用重启吧。 设置了名称: NLS_LANG , 值: AMERICAN_AMERICA.AL32UTF8

编码格式问题还是中文都是乱码?

谢谢,可以了。 各位给了我信心, 其实之前已经试过sql 转成 UTF8 ,只是粗心看错地方了。 刚调试一下,转UTF8 后是可以的。
另外 学到一句 查看 数据库 编码的 SQL语句,select userenv('language') from dual; 得到 SIMPLIFIED CHINESE_CHINA.AL32UTF8 。

多做了 一些 事, 调试里看内存的UTF8 的 16 进制编码, 和 这个 网址 里 查出来的UTF8 编码 比较, 这个 网址 可以 输入句子查看 UTF8 ,GBK 等编码, 很方便。 http://www.mytju.com/classCode/tools/encode_gb2312.asp 悬赏分就给 第一个说 编码 的人吧。

明天再试试 OTLV4 是不是可以, 刚才是直接用OCI 可以了。

用了这样的函数转换 成 UTF8, MultiByteToWideChar**** WideCharToMultiByte , 可能 还有别的方法,比如代码里写的中文默认就是 UTF8, 不用再去转换。 先不管了, 先这样转换就好。

如果是PHP,连接语句这样写
oci_connect($user, $password, $tnsid,"UTF8" ) ;
注意这里可能是一个BUG,写UTF8,而不是UTF-8。
SQL语句中就可以用中文了,包括支持中文表名和中文字段名。