radhat linux as 5 中oracle表插入的汉字查询出来之后成了问号“?”
发布网友
发布时间:2022-04-29 23:17
我来回答
共6个回答
热心网友
时间:2022-06-25 15:53
1、你的前三个查询查询出的是Oracle服务器【内部的字符集】
2、你的第四个查询出的是用户环境下的【变量NLS_LANG保存的字符集】
3、如果 Oracle服务器内部的字符集 和 NLS_LANG变量里保存的字符集 相同,在进行Oracle查询时,就会将Oracle中的数据直接查出来,返回给查询用户。进行Oracle的插入操作,就会直接将插入的数据保存进数据库中。但是如果不同的话,Oracle查询时,会根据这两个字符集的一个映射,将数据库中的数据作一个转换,再返回给查询用户。进行插入操作时,也会根据映射,将插入的数据作一个转换,再插入数据库。这也是产生乱码的原因,这一层转换,把数据都给转乱了。
4、解决办法:
1)、拥有修改权限(用管理用户登录)修改下nls_lang参数。
SQL> conn sys/sys as sysdba;
SQL> alter system set nls_language='Simplified chinese'
2)、经过上面的修改乱码问题应该就会解决了。
---
以上,希望对你有所帮助。
热心网友
时间:2022-06-25 15:53
问题肯定出在
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
你改一下试试看。
热心网友
时间:2022-06-25 15:53
输出的时候进行编码转换
老外开发的东西 没办法的事情
热心网友
时间:2022-06-25 15:54
1、你的前三个查询查询出的是Oracle服务器【内部的字符集】
2、你的第四个查询出的是用户环境下的【变量NLS_LANG保存的字符集】
3、如果 Oracle服务器内部的字符集 和 NLS_LANG变量里保存的字符集 相同,在进行Oracle查询时,就会将Oracle中的数据直接查出来,返回给查询用户。进行Oracle的插入操作,就会直接将插入的数据保存进数据库中。但是如果不同的话,Oracle查询时,会根据这两个字符集的一个映射,将数据库中的数据作一个转换,再返回给查询用户。进行插入操作时,也会根据映射,将插入的数据作一个转换,再插入数据库。这也是产生乱码的原因,这一层转换,把数据都给转乱了。
4、解决办法:
1)、拥有修改权限(用管理用户登录)修改下nls_lang参数。
SQL> conn sys/sys as sysdba;
SQL> alter system set nls_language='Simplified chinese'
大概就是这样!!!!!!!!
热心网友
时间:2022-06-25 15:55
环境变量下改为:NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK 就可以了。记住:两个不同位置的环境变量要一致。
热心网友
时间:2022-06-25 15:55
两个不同位置的环境变量得一致的。
你把环境变量改成NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
应该就就可以了。