Sybase字符集怎么总是出问题?
我安装了Sybase12.5,按照操作手册,服务器的字符集选择了Chinese的eucgb,安装过程没有提示任何错误,数据库也可以正常使用,但是每次使用isql进入数据库,总是提示数据库和客户端的字符集不一致,无法完成对话。插进数据库的中文全部成了“?????”,前台现实也是问号,哪位高手能指点一下,该怎么设置字符集才能保持一致,正常现实中文?谢谢了~~
[解决办法]
将sysbase安装目录下的locales文件夹下的locales.dat里的[nt]最后一句改为locale = default, us_english, cp850
服务器和客户端都是
[解决办法]
你先看哈究竟你的字符集合是不是你想要的哪个字符集合
转换时用命令好点!!!!
我用命令从来没有出过问题
存入数据库时,要进行字符转换!
1.比如:utf-8,iso-1,cp850都要在程序里转换为数据的格式才行比如你就要把你的数据字符集合转换为eucgb
你用命令看哈数据库的字符集究竟是什么在说
用pb连接到sybase上浏览一张表的数据就明白了
以字符集修改成cp936为例,服务器端的安装路径为:/usr/sybase(unix)
1. 修改服务器数据库字符集
$ cd /usr/sybase/ase/ASE-12_5/bin
$ charset -Usa -P -Sservername binary.srt cp936
$ isql -Usa -P -Sservername(运行isql)
>sp_configure "default character set id",171
>go
> reconfigrure
>go
>shut down
然后重新启动
$ cd /usr/sybase/ase/ASE-12_5/install
$ ./startserver -f ./RUN_hostname(RUN_hostname为install目录下的一文件名,hostname在interface文件中有说明)
此时启动可能有错误,再执行一遍
./startserver -f ./RUN_hostname
就ok了
2. 设置客户端字符集(客户端为NT系列,如XP等)
修改C:\sybase\locales\locales.dat文件
将[NT]部分locale = default改为
locale = default, us_english, cp936
一些命令介绍
查询客户端字符集
select @@client_csname,@@client_csid,@@char_convert
sybase下字符集转换的问题
在syscharsets表中可以看到cp850字符集,如下:
name id
------------------------------ ---
ascii_8 0
iso_1 1
cp850 2
cp437 3
roman8 4
mac 5
defaultml 20
thaidict 21
iso14651 22
utf8bin 24
binary 25
altnoacc 39
altdict 45
altnocsp 46
但是用sp_configure "default character set id",2更改字符集为cp850时,系统报错如下:
1>; sp_configure "default character set id",2
2>;
3>; go
Msg 5824, Level 16, State 4:
Server 'shang', Procedure 'sp_configure', Line 695:
Cannot reconfigure server to use sort order ID 25, because the row for its
underlying character set (ID 2) does not exist in syscharsets.
(return status = 1)
进行数据库改变字符集合时
先要导出数据,在换字符集合,在把数据导如
用bcp较好
bcp manager..AAA_npb_ydlb in AAA_npb_ydlb.txt -Usa -P -Smanager -Jiso_1 -c