oracle到mysql中文变成问号,改了字符集还是没用

oracle到mysql中文变成问号,改了字符集还是没用,第1张

Oracle数据库字符集最有用的参数是NLS_LANG参数,格式如下: NLS_LANG = language_territory.charsetanguage:服务器消息的语言, 是中文还是英文Territory: 服务器的日期和数字格式,Charset: 指定字符集。

登录以sysdba登录,查看视图select * from v$nls_parameters,可以知道具体的字符集参数,正常的应该是1NLS_LANGUAGE=SIMPLIFIED CHINESE2NLS_TERRITORY=CHINA3NLS_CHARACTERSET=ZHS16GBK然后有问题就去修改参数文件里面的参数,最好做个备份哦!因为改字符集有风险。客户端设置(linux) $NLS_LANG=“simplified chinese”_china.zhs16gbk $export NLS_LANG.数据库服务器字符集select * from nls_database_parameters是表示数据库的字符集,或者v$nls_parameters 客户端字符集环境select * from nls_instance_parameters或者v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 会话字符集环境select * from nls_session_parametersv$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。以上都没问题 就会OK了,(仅供参考,若有雷同纯属巧合)

首先,检查DB中字符集,可以通过以下的SQL来查得,

SELECT * FROM v$nls_parameters

或者

SELECT USERENV ('language') FROM DUAL

比如查询结果:

SIMPLIFIED CHINESE_CHINA.ZHS16GBK

那么字符集就是:ZHS16GBK;

然后设置客户端的本地字符集:

注册表:

默认情况下,windows上的Oracle安装使用注册表来定义这个设置。

版本 10g 及以上:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<oracle_home_name>

这里您会看到一个条目名为NLS_LANG

在64位windows平台上安装32位软件,会使用32位兼容性路径

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY_<oracle_home_name>

或者环境变量:'我的电脑' ->'属性' >'高级'  ->'环境变量'

增加一个:nls_lang = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

重启一下机器就可以了。

数据库字符集设置不对,修改下就好了。

1、先用system和密码登陆SQLPLUS(如果不能直接以sys登陆到sqlplus的话),进入到sql*plus之后,可以通过conn / as sysdba转变为sysdba身份连接到数据库

2、开始修改编码

shutdown immediate停止oracle服务以及监听。如果服务停止,这部可省略

startup mount

alter system enable restricted session

alter system set job_queue_processes=0初始化设置job

alter database open

alter database character set internal_use utf8设置编码 (alter database character set internal_use ZHS16GBK)(alter database character set internal_use WE8ISO8859P1)

shutdown immediate关闭

startup重启

至此编码已经设置完成。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9381195.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存