sybase客户端显示乱码问题:服务器端字符集为cp850 客户端也为cp850

sybase客户端显示乱码问题:服务器端字符集为cp850 客户端也为cp850,第1张

安装字符集cp936

运行命令(CMD命令): charset

-Usa -Ppassword binarysrt cp936

-- sybase执行脚本

use master

go

select id,name from syscharsets

go

exec sp_configure "default char"

go

exec sp_configure "default char",171

go

你试试!

数据库服务器字符集select from nls_database_parameters,其来源于props$,是表示数据库的字符集。

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

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

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

客户端的字符集要求与服务器一致,才能正确显示数据库的非Ascii字符。如果多个设置存在的时候,alter session>环境变量>注册表>参数文件

字符集要求一致,但是语言设置却可以不同,语言设置建议用英文。如字符集是zhs16gbk,则nls_lang可以是American_Americazhs16gbk。

涉及三方面的字符集,

1 oracel server端的字符集;

2 oracle client端的字符集;

3 dmp文件的字符集。

在做数据导入的时候,需要这三个字符集都一致才能正确导入。

21 查询oracle server端的字符集

有很多种方法可以查出oracle server端的字符集,比较直观的查询方法是以下这种:

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')

SIMPLIFIED CHINESE_CHINAZHS16GBK

SQL>select userenv(‘language’) from dual;

AMERICAN _ AMERICA ZHS16GBK

1。select from v$nls_parameters

查询nls的参数,获得数据库服务器端的字符编码

NLS_LANGUAGE

NLS_CHARACTERSET

2。修改本地环境变量,设置

NLS_LANG = SIMPLIFIED CHINESEZHS16GBK //这个是我们的数据库字符编码

NLS_LANG格式:

NLS_LANG = language_territorycharset

有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:language 指定服务器消息的语言。

territory 指定服务器的日期和数字格式。

charset 指定字符集

需要保证要设置客户端字符集与服务器端字符集一致

客户端连接Linux服务器中文显示乱码,如下图所示:

字符乱码问题 :如果服务器本身支持中文,只是客户端显示乱码,通常就是

客户端字符集与服务器字符集不一致造成的。把客户端字符集改成服务器字符集就可以解决的。但是像 SSHSecureShellClient-329exe 客户端没有设置字符集的地方,就需要把字符集改为zh_CNGB18030才能正确显示中文:

export LC_CTYPE=zh_CNGB18030

export LC_ALL=zh_CNGB18030

export LANG=zh_CNGB18030

设置完就解决了客户端连接Linux系统中文显示乱码的问题。

注:每次使用客户端连接Linux服务器时,都需要手动改一下字符集。

应该是错误输入了全角字符,输入半角字符就行了。

错误信息ORA-00911: invalid character说明了在执行的SQL语句中出现了无效字符,所在SQL语句无法通过语法分析过程导致了错误结果。

可能出现的原因有:错误地输入了全角字符,比如输入了全角逗号。

如果使用C++、Java、C#等编程时,总会习惯在语句最后加分号,而这个符号在SQL中是无效字符。

实际语句和列类型不匹配,比如将数值列赋值为字符串。

与display函数不同,display_cursor显示的为真实的执行计划。

对于format参数,使用与display函数的各个值,同样适用于display_cursor函数。

当statistics_level为all或使用gather_plan_statistics提示可以获得执行时的统计信息。

根据真实与预估的统计信息可以初步判断SQL效率低下的原因,如统计信息的准确性、主要的开销位于那些步骤等。

看你的sql语句最后是否有分号,有的话去掉就行 看你Oracle服务器端字符集是否和Oracle客户端字符集匹配。

查询oracle server端的字符集:SQL>select userenv(‘language’) from dual。

查询oracle client端的字符集。在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。

还可以在dos窗口里面自己设置,比如: set nls_lang=AMERICAN_AMERICAZHS16GBK。

Oracle数据库字符集最有用的参数是NLS_LANG参数,格式如下: NLS_LANG = language_territorycharset

anguage:服务器消息的语言, 是中文还是英文

Territory: 服务器的日期和数字格式,

Charset: 指定字符集。

登录以sysdba登录,查看视图select from v$nls_parameters,可以知道具体的字符集参数,

正常的应该是

1NLS_LANGUAGE=SIMPLIFIED CHINESE

2NLS_TERRITORY=CHINA

3NLS_CHARACTERSET=ZHS16GBK

然后有问题就去修改参数文件里面的参数,最好做个备份哦!

因为改字符集有风险。

客户端设置(linux)

$NLS_LANG=“simplified chinese”_chinazhs16gbk

$export NLS_LANG

数据库服务器字符集

select from nls_database_parameters

是表示数据库的字符集,或者v$nls_parameters

客户端字符集环境

select from nls_instance_parameters

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

会话字符集环境

select from nls_session_parameters

v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

以上都没问题 就会OK了,

(仅供参考,若有雷同纯属巧合)

1、首先我们打开电脑桌面,同时按windows徽标键和R键,在弹出来的窗口里输入,regedit,点击OK按钮。

2、打开后进入注册表界面。

3、打开后找到HKEY_LOCAL_MACHINE下的SOFTWARESOFTWARE下有Oracle选项,自己查找即可找到。

4、oracle下有好几个目录,可以都点点,因为目录名字可能不一样,不能肯定的说就是跟我的截图一样,可以明确的是,我们要找的注册项就是NLS_LANG。

5、找到后双击进行编辑,将nls_lang=SIMPLIFIED CHINESE_CHINAZHS16GBK修改成其他字符集,编辑后保存即可。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » sybase客户端显示乱码问题:服务器端字符集为cp850 客户端也为cp850

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情