在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. **乱码问题**:如果在查询结果中出现乱码,可能是由于客户端与服务器端的字符集不一致导致的。解决方法是检查并统一客户端和服务器端的字符集设置。 2. **排序问题**:中文排序可能会遇到按照Unicode编码排序而...
0.jar包是已经把修改文件放进去后的结果。可以直接用 1.Utils类中有说明 2/表头乱码问题请参考http://download.csdn.net/detail/hongyuan19/4073652
- **加强异常处理**:在应用程序中增加异常捕获和日志记录功能,以便快速定位问题来源。 - **更新数据库补丁和驱动程序**:定期检查DB2系统的版本更新,安装最新的安全补丁和性能优化包。 通过以上分析和建议,...
- **字符集问题**:确保在导出和导入过程中使用的字符集一致,避免出现乱码问题。 - **性能优化**:合理设置SQLLoader的参数,如`ROWS`、`READSIZE`等,以提高导入效率。 - **数据完整性验证**:迁移完成后,应验证...
- **1.4.7 在客户端查询数据库中文信息会产生乱码** - 问题分析:可能是客户端与服务器之间的字符集设置不一致导致的。 - 解决方案:统一客户端和服务器的字符集设置,确保二者一致。 - **1.4.8 重启动机器后,...
当Outline和成员为中文时,在连接到英文环境的HP_UX上的DB2 Olap Server 8.1时,可能出现乱码。解决方法是修改jsp文件中的contentType设置为"text/html;charset=utf-8",并尝试通过浏览器的编码设置来显示中文。...
- 如果在导入过程中遇到主键冲突,`INSERT_UPDATE`或`REPLACE`选项可以帮助解决这个问题。 5. **性能优化** - 在大量数据导入时,可以考虑使用`LOAD`命令,其通常比`INSERT`更快,因为它可以直接将数据加载到表中...
在使用 Kettle 进行数据转换和ETL(提取、转换、加载)过程中,可能会遇到各种问题。以下是一些常见的问题及其解决方案: 1. **问题1:从Excel抽取数据到Oracle 9数据库时出现无效数字错误** 错误描述:在尝试插入...
在使用 Kettle 进行数据转换和ETL(提取、转换、加载)过程中,可能会遇到各种问题。以下是一些常见的问题及其解决方案: 1. **问题1:从Excel抽取数据到Oracle报错(ORA-01722)** 当尝试将包含逗号的数字(如1,798...
在从文本文件中获取数据时, 需要在该步骤中指定文件名、文件内容、错误处理方式、过滤器、字段等信息。 **参数说明**: 1. **指定文件名的方式**: - 指定具体的文件名。 - 使用正则表达式匹配一个目录下的文件。 ...
在描述中提到的问题中,当使用`ORDER BY`对包含非唯一值的列进行排序,并结合分页查询时,发现不同页码的数据可能会有重复。这进一步证实了`ORDER BY`在Oracle中的不稳定特性。在没有唯一索引或主键约束的情况下,...
本文将围绕几个关键的SQL知识点展开,它们包括:查找重复数据、获取成绩排名、表结构和数据的复制、Java中JDBC的编码设置,以及在DB2数据库中建表遇到的问题。 首先,查找重复数据是日常工作中经常会遇到的问题。...
- 如果数据库中有非ASCII字符(如中文、日文等),确保CSV文件编码为UTF-8,以免导入Excel时出现乱码。 - 在导入大量数据时,Excel可能会有行数限制(通常是1048576行)。如果数据超过这个限制,可能需要分批导入...
中文乱码问题是开发过程中常见的问题之一,尤其是在涉及到中文字符输入输出的情况下。以下是一些解决中文乱码的方法: - **设置字符编码**:在连接数据库时指定字符编码,例如`?useUnicode=true&characterEncoding=...
在使用 DataX 将数据从 Hive 表导入 MySQL 表的过程中,遇到了数据缺失的问题。具体表现为,在某些特定条件下(如数据块大小超过 256M 时),导入到 MySQL 的数据量少于预期。 #### 现象分析 根据观察发现,当数据...
5. **智能处理**:自动处理超长记录的折行,确保中文不乱码,支持缩放打印和即打即停功能,提供灵活的打印预览和打印方式。 6. **报表设计器**:类似于Excel的界面,提供了高度自定义的设计工具,包括合并单元格、...
2.2.6 指点迷津——如何处理中文乱码问题 2.2.7 使用JavaMail发送注册验证邮件 2.2.8 独家见解——在前台还是后台验证 2.2.8 数据有效性 2.3 实现用户登录 2.3.1 创建登录输入表单 2.3.2 验证...
如果数据表使用非默认的`latin1`字符集,则必须使用该选项,否则再次导入数据时可能会出现乱码问题。 4. **--disable-keys** - 在INSERT语句的开头和结尾添加`/*!40000 ALTERTABLE table DISABLE KEYS */;` 和 `/*...
Java是企业级应用开发的重要语言,面试中常常会涉及到各种技术点。以下是对这些面试题中涉及的知识点的详细解析: 1. **Oracle,MySQL,DB2 三大数据库的相同点和区别**: - 相同点:都是关系型数据库管理系统,...