问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Oracle数据出现中文乱码怎么解决

发布网友 发布时间:2022-04-25 13:18

我来回答

3个回答

热心网友 时间:2022-04-08 06:21

1. 服务器指定字符集与客户字符集不同,而与加载数据字符集一致。
解决方法:对于这种情况,只需要设置客户端字符集与服务器端字符集一致就可以了,具体操作如下:
* 查看当前字符集:
SQL> select * from sys.props$
2 WHERE NAME=‘NLS_CHARACTERSET’;

NAME value$
NLS_CHARACTERSET ZHS16GBK

可以看出,现在服务器端Oracle数据库的字符集为‘ZHS16GBK’
* 根据服务器的字符集在客户端作相应的配置或者安装Oracle的客户端软件时指定:
如果还没安装客户端,那么在安装客户端时,指定与服务器相吻合的字符集即可;如果已经安装好了客户端,并且客户端为 sql*net 2.0 以下版本,进入Windows的系统目录,编辑oracle.ini文件,用US7ASCII替换原字符集,重新启动计算机,设置生效;否则,如果,客户端为 sql*net 2.0 以上版本,在Win98 下 运 行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE, 第三步选择 Oracle, 第四步选择 NLS_LANG, 键 入 与服 务 器 端 相 同 的 字 符 集
(本例为:HKEY_LOCAL_MACHINE/

SOFTWARE/ORACLE/NLS_LANG :AMERICAN _ AMERICA. ZHS16GBK)。
如果是UNIX客户端,则:
SQL> conn / as sysdba
Connected.
SQL> SQL> UPDATE sys.PROPS$ SET value$=‘SIMPLIFIED CHINESE’
2 WHERE NAME=‘NLS_LANGUAGE’;

2. 服务器指定字符集与客户字符集相同,与加载数据字符集不一致。
解决方法:强制加载数据字符集与服务器端字符集一致。要做到这一点,可以通过重新创建数据库,并选择与原卸出数据一致的字符集,然后IMP数据,这种情况仅仅适用于空库和具有同一种字符集的数据。
解决这类问题,也可以先将数据加载到具有相同字符集的服务器上,然后用转换工具卸出为foxbase 格式或access格式数据库,再用转换工具转入到不同字符集的Oracle数据库中,这样就避免了Oracle字符集的困扰。目前数据库格式转换的工具很多,像power builder5.0以上版本提供的pipeline及Microsoft Access数据库提供的数据导入/导出功能等。

3. 服务器指定字符集与客户字符集不同,与输入数据字符集不一致。
对于这种情况,目前为止都还没有太好的解决方法。
通过上面的了解,我们知道,导致在后期使用数据库时出现种种关于字符集的问题,多半是由于在数据库设计、安装之初没有很好地考虑到以后的需要,所以,我们完全可以通过在服务器上和客户端使用相同的字符集来避免由此类问题引出的麻烦
怎样修改查看Oracle字符集
a.数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。

b.客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,

表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

c.会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件
实际情况
我用select * from nls_database_parameters
PARAMETER VALUE
------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM

PARAMETER VALUE
------------------------------ ------------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0
说明我在创建数据库时指定的字符集是ZHS16GBK,我用
update sys.props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';
修改了字符集,但插入中文时仍然有问题,这或许就如上面资料所说的通过修改SYS.PROPS$来修改主要是对应客户端的显示,与存储无关,
所以仍旧是乱码。
然后我重新创建了个数据库,指定字符集为AL32UTF8,插入中文就没问题了。
可见我们如果要在数据库中显示中文,在创建数据库时一定哟指定好所用的字符集。

热心网友 时间:2022-04-08 07:39

一、pl/sql developer 中文字段显示乱码
原因:因为数据库的编号格式和pl /sql developer的编码格式不统一造成的。
二、查看和修改oracle数据库字符集:
select userenv('language') from al;
查询结果:
SIMPLIFIED CHINESE_CHINA.AL32UTF8
--修改oracle数据库字符集:(在SQL Plus中)
sql> conn / as sysdba;
sql> shutdown immediate;
database closed.
database dismounted.
oracle instance shut down.
sql> startup mount;
oracle instance started.
total system global area 135337420 bytes
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
database mounted.
sql> alter system enable restricted session;
system altered.
sql> alter system set job_queue_processes=0;

热心网友 时间:2022-04-08 09:13

你这个没有售后吗
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机如何查看桌面壁纸 科目三学车时把教练车撞坏了,教练要求我赔总金额的20%,我需要赔吗... 日本政府无条件投降到底是1945年9月2日还是九月3日?还是8月15日?请了... 国家承压阀门产品监督检验中心的关键仪器都包括哪些类型? 我的世界原初修真精血怎么弄 用过耳机后,音响无法发出声音 为什么插耳机后音响没声音了 教你如何免费升级win10 windows8怎么升级到win10 windows8升级到win10方法 操作系统怎么升级win10 如何解决Oracle数据库中文乱码问题 PLSQL Developer如何把英文字符集设置为中文? 如何做红烧肉黄花菜 oracle的NLS_LANGUAGE如何修改成SIMPLIFIED CHINESE_CHINA? 怎么设置oracle的中文乱码 黄花菜炒五花肉怎么做 如何修改Oracle数据库字符集 黄花菜焖五花肉的做法步骤图,怎么做好吃 怎么把oracle的字符编码从American_America.ZHS16GBK 改成SIMPLIFIED CH... 苹果手机人脸识别损坏,对手机使用寿命有影响吗? 黄花菜扣肉怎么做好吃呢? 怎样让Oracle支持中文 五花肉炖黄花菜的做法,五花肉炖黄花菜怎么做 英文的操作系统上可以改变oracle的字符集为中文的吗? 干黄花菜五花肉怎么做好吃 黄花菜红烧肉的做法 五花肉炖黄花菜怎么做好吃,五花肉炖黄花菜 黄花菜烧肉的做法 黄花菜扣肉的美味做法? 五花肉炖黄花菜怎么煮 2000买一个iphone11面容坏了的手机值不值 如何设置oracle数据库的字符集 iphone11换屏面容有影响吗 ORACLE的中文问题 苹果11面容识别失灵了咋办? oracle用户名有中文字符怎么修改 oracle中如何将字符和数字转成中文 Oracle修改字符集后,所有的中文数据变成乱码!请问怎么解决。_百度知 ... iPhone11洒上水面容会坏吗? 美的变频空调H5是什么故障? linux下oracle环境变量设置中加入了中文字符级执行sqlplus却不是中文... oracle 插入中文查询显示乱码,问号是什么原因 oracle odbc 怎么设置能 支持中文 美的空调h5 oracle中文乱码 美的空调显示h5原因是不是按错键打开机温度不会上升,以前十分钟温度就上... 美的空调H5故障 铁电池放电过程中把什么能转化为什么能 用什么软件打开IGS 文件 IGS文件用什么软件打开最好