设为首页 收藏本站
查看: 1086|回复: 0

[经验分享] DB2中文字段在C程序中的乱码问题

[复制链接]

尚未签到

发表于 2016-11-17 00:09:01 | 显示全部楼层 |阅读模式
  在C语言中用嵌入式SQL访问DB2数据库时,中文字段显示出现错误,具体情况为空白,通过打印字符的16进制码,发现是操作系统不支持中文引起的。
  开发环境为AIX6.1,  DB2 V9.5, 用标准C开发应用程序。
  查看语言设置,如下:
  #locale
  LANG=en_US
LC_COLLATE="en_US"
LC_CTYPE="en_US"
LC_MONETARY="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_MESSAGES="en_US"
LC_ALL=
  系统目前为 英文,
  查看系统支持的语言包如下:
  #locale -a
  C
POSIX
en_US.8859-15
en_US.ISO8859-1
en_US
  显然,目前的系统没有安装 中文语言包,上网搜了一下,由于语言包为系统自带,需要AIX的安装光盘,找到AIX光盘,通过远程终端,上传如下文件包到服务器:
  bos.iconv         
  bos.loc.com.CN    
  bos.loc.com.utf   
  bos.loc.iso.zh    
  bos.loc.utf.ZH_CN
  1.  安装语言包,SMITTY INSTALLP,  进入上传文件包的位置,输入如下安装命令
  #smitty installp
  下一步, 选择 Install and Update from ALL Available Software,  回车,
  再下一步, 在 * INPUT device / directory for software      []       中输入  " . "  , 表示当前路径,
  接着在 * SOFTWARE to install                                []    的地方 按F4, 可以选择要安装的软件包,
  注意: 安装的时候需要 root 身份登录, 启用有一个包有依赖,如果安装失败,需要先安装完其他的才可以继续安装。
  安装完成,F3 退出SMITTY,
  #locale -a
  C
POSIX
ZH_CN.UTF-8
ZH_CN
Zh_CN.GB18030
Zh_CN
Zh_TW.big5
Zh_TW
en_US.8859-15
en_US.ISO8859-1
en_US
zh_CN.IBM-eucCN
zh_CN
zh_TW.IBM-eucTW
zh_TW
  现在系统可以支持中文了, 有 UTF-8, BG18030 等,
  2.  设置系统语言环境,   在 .profile  文件中加入环境变量(bash为 .bash_profile)
  export LANG=ZH_CN.UTF-8     或者   export LANG=ZH_CN      #支持utf-8
  export LANG=Zh_CN.GB18030     或者   export LANG=Zh_CN      #支持 GB18030
  注意设置的 ZH_CN  与  Zh_CN 的区别,  (h 大小写问题)
  重新登录后,
  #locale
  LANG=ZH_CN.UTF-8
            LC_COLLATE="ZH_CN.UTF-8"
            LC_CTYPE="ZH_CN.UTF-8"
            LC_MONETARY="ZH_CN.UTF-8"
            LC_NUMERIC="ZH_CN.UTF-8"
            LC_TIME="ZH_CN.UTF-8"
            LC_MESSAGES="ZH_CN.UTF-8"
            LC_ALL=
  3.   编译程序,运行.  发现显示还是不正确, 不是空白了,但是是乱码
  查看登录终端的设置, 我用的是Secure-CRT,   发现在  选项 / 会话选项  / 外观 / 字符编码 为 default, 
  选择UTF-8 , 保存退出。
  再次登录,运行程序, O.K.  搞定了。 
  4.   TUXODO 对中文的支持,由于涉及到TUXEDO, 同时在重启 TUXEDO 服务时出现如下错误,
  NLS:4: Cannot open message catalog CMDTUX_CAT, set 1, num 748; check TUXDIR=/home/tuxedo/tuxedo8.1, LANG=ZH_CN.UTF-8
  在TUXEDO 的主目录下,有一个  locale 目录, 进入后建立连接如下
  # ln  -s  C    ZH_CN.UTF-8
  # ls -l 
  drwxr-xr-x    2 tuxedo   tuxedo         4096 12月15 2010    C
         lrwxrwxrwx    1 tuxedo   tuxedo            1  1月09 17时23 ZH_CN.UTF-8 -> C
         lrwxrwxrwx    1 tuxedo   300               1 12月08 14时02 en_US -> C
  重新启动TUXEDO服务, 错误没有了。
  
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301187-1-1.html 上篇帖子: 关于一个DB2 order by排序的问题 下篇帖子: DB2递归实现字符串分组连接操作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表