Teamcenter的中文字符显示问题

前段时间在安装Teamcenter的时候出现了字符存储问题。字符到不是乱码,而是以奇怪的字母和数字进行存储。

开始以为是Oracle的配置问题,所以

1. 检测Oracle的database设置,输入

 

select *  from nls_database_parameters where parameter='NLS_CHARACTERSET'

 

返回 ZHS16GBK,这说明Oracle服务器端的字符集配置为正确设置。

2. 接着输入

 

select userenv('language') from dual

 

返回 AMERICAN _ AMERICA. ZHS16GBK

这也不影响结果,前面两个参数只影响界面提示信息和货币日期格式等。

这说明我在创建database选择的字符集ZHS16GBK并没有错误。

3. 查询client端的字符集

打开注册表,查询“NLS_LANG” ,发现它在HKEY_LOCAL_MACHINE\Software\Oracle\HOME0下,修改其value为:

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

 

打开Teamcenter,发现还是不能正确显示。当时安装Teamcenter时,选择的默认字符集为EUN_CN,GB2312,这个也应该能正确显示中文才是。

后来在Oracle的数据库里找到了对应的存储表格,发现存储进database时字符已经变成了乱码。研究了半天,可能是Teamcenter调用了操作系统Windows的一下API,而本机的Windows是英文版的,安装的中文语言包的支持。这样可能在调用时系统的函数时采用的字符就不一样了。

本想绝望地安装中文操作系统时,找到了一个解决办法。

4. 在操作系统里设置系统环境变量 NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

然后Teamcenter里的内容就能正常显示了。

解决办法太莫名其妙了,暂且记之。

顺便,oracle里用sql*Worksheet 读出的中文也是乱码,但直接查看表格时却是正确的,这个的解决办法也很简单。

打开 $ORACLE_HOME\sysman\config\dbappscfg.properties  文件,

找到注释掉的这一句 #   SQLPLUS_NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 

添加一句

SQLPLUS_NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 
即可。

 

参考链接:

Oracle 数据库字符集

SqlPlus乱码问题 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值