C语言显示oracle数据表中的utf8字符串

时间:2023-01-11 14:06:30
我用oracle 的Proc读取Oracle数据表中的字段值,Oracle数据库是使用utf8编码的。

我是在ubuntu下,终端也是utf8字符串,C程序也是使用utf8编码格式存储的。程序运行时,在显示从数据表中读取的数据时,中文字符都是乱码(就全是?号)。 数据表中的中文字符是通过PHP的WEB页面以utf8编码存储进去的,在PHP的WEB页面中显示都是正常的。

不知这是怎么回事?有哪位知晓否? 可否告知在下处理方法, 不甚感激!

5 个解决方案

#1


ubuntu  字符集不对 
我遇到了也没解决  可是我觉得你的应该简单多了 
直接locale看看字符集设置
然后set lc_all=设置下看看

#2


~$ locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

#3


自己解决了,在联接数据库前设置环境变量:

setenv("NLS_LANG","AMERICAN_AMERICA.AL32UTF8",1);

#4


帮顶

#5


还以为在dos下。

#1


ubuntu  字符集不对 
我遇到了也没解决  可是我觉得你的应该简单多了 
直接locale看看字符集设置
然后set lc_all=设置下看看

#2


~$ locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

#3


自己解决了,在联接数据库前设置环境变量:

setenv("NLS_LANG","AMERICAN_AMERICA.AL32UTF8",1);

#4


帮顶

#5


还以为在dos下。