`
daizh868
  • 浏览: 20315 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DB2中文字段在C程序中的乱码问题

阅读更多

在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服务, 错误没有了。

 

 

 

 


 

  

 

 

 

 

分享到:
评论

相关推荐

    db2中文支持的字符

    1. **乱码问题**:如果在查询结果中出现乱码,可能是由于客户端与服务器端的字符集不一致导致的。解决方法是检查并统一客户端和服务器端的字符集设置。 2. **排序问题**:中文排序可能会遇到按照Unicode编码排序而...

    javadbf修正数据中文乱码及奇数字节丢失最后一个字节问题

    0.jar包是已经把修改文件放进去后的结果。可以直接用 1.Utils类中有说明 2/表头乱码问题请参考http://download.csdn.net/detail/hongyuan19/4073652

    DB2常见SQL问题解释

    - **加强异常处理**:在应用程序中增加异常捕获和日志记录功能,以便快速定位问题来源。 - **更新数据库补丁和驱动程序**:定期检查DB2系统的版本更新,安装最新的安全补丁和性能优化包。 通过以上分析和建议,...

    DB2到Oracle的数据迁移

    - **字符集问题**:确保在导出和导入过程中使用的字符集一致,避免出现乱码问题。 - **性能优化**:合理设置SQLLoader的参数,如`ROWS`、`READSIZE`等,以提高导入效率。 - **数据完整性验证**:迁移完成后,应验证...

    数据业务工程师DB2入门指南

    - **1.4.7 在客户端查询数据库中文信息会产生乱码** - 问题分析:可能是客户端与服务器之间的字符集设置不一致导致的。 - 解决方案:统一客户端和服务器的字符集设置,确保二者一致。 - **1.4.8 重启动机器后,...

    AlphaBlox已知问题及解决方法

    当Outline和成员为中文时,在连接到英文环境的HP_UX上的DB2 Olap Server 8.1时,可能出现乱码。解决方法是修改jsp文件中的contentType设置为"text/html;charset=utf-8",并尝试通过浏览器的编码设置来显示中文。...

    Db2 文件导入导出常见命令总结

    - 如果在导入过程中遇到主键冲突,`INSERT_UPDATE`或`REPLACE`选项可以帮助解决这个问题。 5. **性能优化** - 在大量数据导入时,可以考虑使用`LOAD`命令,其通常比`INSERT`更快,因为它可以直接将数据加载到表中...

    kettle_使用中的一些常见问题

    在使用 Kettle 进行数据转换和ETL(提取、转换、加载)过程中,可能会遇到各种问题。以下是一些常见的问题及其解决方案: 1. **问题1:从Excel抽取数据到Oracle 9数据库时出现无效数字错误** 错误描述:在尝试插入...

    kettle-使用中的一些常见问题

    在使用 Kettle 进行数据转换和ETL(提取、转换、加载)过程中,可能会遇到各种问题。以下是一些常见的问题及其解决方案: 1. **问题1:从Excel抽取数据到Oracle报错(ORA-01722)** 当尝试将包含逗号的数字(如1,798...

    kettle_使用中的一些常见问题.docx

    在从文本文件中获取数据时, 需要在该步骤中指定文件名、文件内容、错误处理方式、过滤器、字段等信息。 **参数说明**: 1. **指定文件名的方式**: - 指定具体的文件名。 - 使用正则表达式匹配一个目录下的文件。 ...

    Oracle数据库中ORDER BY排序和查询按IN条件的顺序输出

    在描述中提到的问题中,当使用`ORDER BY`对包含非唯一值的列进行排序,并结合分页查询时,发现不同页码的数据可能会有重复。这进一步证实了`ORDER BY`在Oracle中的不稳定特性。在没有唯一索引或主键约束的情况下,...

    SQL语句整合

    本文将围绕几个关键的SQL知识点展开,它们包括:查找重复数据、获取成绩排名、表结构和数据的复制、Java中JDBC的编码设置,以及在DB2数据库中建表遇到的问题。 首先,查找重复数据是日常工作中经常会遇到的问题。...

    SQLite导出数据到excel

    - 如果数据库中有非ASCII字符(如中文、日文等),确保CSV文件编码为UTF-8,以免导入Excel时出现乱码。 - 在导入大量数据时,Excel可能会有行数限制(通常是1048576行)。如果数据超过这个限制,可能需要分批导入...

    Java学习笔记

    中文乱码问题是开发过程中常见的问题之一,尤其是在涉及到中文字符输入输出的情况下。以下是一些解决中文乱码的方法: - **设置字符编码**:在连接数据库时指定字符编码,例如`?useUnicode=true&characterEncoding=...

    datax数据从hive导入mysql数据缺失解决

    在使用 DataX 将数据从 Hive 表导入 MySQL 表的过程中,遇到了数据缺失的问题。具体表现为,在某些特定条件下(如数据块大小超过 256M 时),导入到 MySQL 的数据量少于预期。 #### 现象分析 根据观察发现,当数据...

    Crk Report 报表平台程序及功能简介

    5. **智能处理**:自动处理超长记录的折行,确保中文不乱码,支持缩放打印和即打即停功能,提供灵活的打印预览和打印方式。 6. **报表设计器**:类似于Excel的界面,提供了高度自定义的设计工具,包括合并单元格、...

    JSP网站开发典型模块与实例精讲

     2.2.6 指点迷津——如何处理中文乱码问题  2.2.7 使用JavaMail发送注册验证邮件  2.2.8 独家见解——在前台还是后台验证  2.2.8 数据有效性  2.3 实现用户登录  2.3.1 创建登录输入表单  2.3.2 验证...

    MySQL掌握备份恢复工具mysqldump实践

    如果数据表使用非默认的`latin1`字符集,则必须使用该选项,否则再次导入数据时可能会出现乱码问题。 4. **--disable-keys** - 在INSERT语句的开头和结尾添加`/*!40000 ALTERTABLE table DISABLE KEYS */;` 和 `/*...

    java部分面试题.pdf

    Java是企业级应用开发的重要语言,面试中常常会涉及到各种技术点。以下是对这些面试题中涉及的知识点的详细解析: 1. **Oracle,MySQL,DB2 三大数据库的相同点和区别**: - 相同点:都是关系型数据库管理系统,...

Global site tag (gtag.js) - Google Analytics