|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?站点注册
×
本帖最后由 andkylee 于 2010-9-15 20:16 编辑
转自:http://www.dbainfo.net/sybase-ase-1503-character-set-utf8-chinese-language.htm
安装中文语言支持、配置字符集
在windows平台上,Sybase ASE15.0.3安装完成后默认语言是:英语(us_english),默认字符集为:cp850。cp850是一个西欧字符集,虽然也能使用cp850字符集保存汉字,但是不推荐在生产环境中使用该字符集。
如果生产系统中Sybase ASE数据库仅考虑支持简体中文的话,则可以使用cp936或者utf8这两种字符集。如果需要国际化支持,那么需选择utf8字符集。
在生产环境中,需要将默认字符集由cp850调整为utf8(或者调整成支持简体中文的cp936也可以,根据项目情况而定!),将默认语言调整为中文。
备注:如果想设定ASE的默认语言为中文,必须先将默认字符集设定为utf8,才能设置默认语言为中文。否则会报错。
1查看当前数据库的默认字符集:
执行:
sp_configure "default character set id"
go
查看到Run Value为:2,执行:
select id,name from master..syscharsets where id=2
go
查看到当前字符集为:cp850
2将字符集调整为utf8的过程:
将字符集由cp850或者iso_1调整为utf8有2中方法:图形界面工具和命令行工具。下面分别演示过程。
2.1用图形界面工具调整字符集为utf8
菜单:开始>所有程序>Sybase>Adaptive Server Enterprise>Server Config
(或者:
cd /d %sybase%\%sybase_ase%\bin
syconfig
)
左边的产品列表选择Adaptive Server,点“配置Adaptive Server”按钮,选择要配置的服务器:WIN2003SERVER
输入sa的口令:
进入到配置Adaptive Server窗口
选择“语言”按钮,
可以看到当前缺省值中的字符集为:cp850。点“字符集”下面的“添加/删除”按钮,
从可用字符集列表中选择“Unicode 3.1 UTF-8 Character Set”字符集,点确定。
点“字符集”下面的“设置缺省值”按钮
选择“Unicode 3.1 UTF-8 Character Set”字符集,点确定。
预览一下,可以看到当前缺省值中字符集已经被改为“utf8”。点确定按钮。返回到“配置Adaptive Server”窗口,点保存按钮。
这时候开始安装utf8字符集,并配置默认字符集为utf8。如果ASE中有用户数据库,则此过程需要持续一段时间,因为ASE需要将用户数据库的内容都转化为utf8字符集下的内容。
配置完成后返回到窗口。
查看ASE的错误日志文件win2003server.log,发现在配置字符集为utf8过程中ASE重启了两次。
00:00000:00031:2010/09/13 13:59:32.67 server The configuration option 'default character set id' has been changed by 'sa' from '2' to '190'.
00:00000:00031:2010/09/13 13:59:32.67 server WARNING: ***************************
00:00000:00031:2010/09/13 13:59:32.67 server Default char set being reconfigured:
00:00000:00031:2010/09/13 13:59:32.67 server old charset ID = 2 new charset ID = 190
00:00000:00016:2010/09/13 13:59:34.89 server Shutdown started by user 'sa'. SQL text: shutdown
先将ASE数据库关闭,然后用单用户模式启动数据库
00:00000:00001:2010/09/13 14:00:11.59 server *** WARNING ******************
00:00000:00001:2010/09/13 14:00:11.59 server Attempting to change default character set ID from 2 to 190
00:00000:00001:2010/09/13 14:00:11.59 server ASE booted single user mode – updates allowed to system catalogs
00:00000:00001:2010/09/13 14:00:11.59 server *** WARNING ******************
此时数据库默认字符集已经调整为utf8,后面的过程为将ASE已有数据库的数据转化为utf8的数据。
00:00000:00001:2010/09/13 14:00:30.96 server Now loading ASE's new default sort order and character set
00:00000:00001:2010/09/13 14:00:31.07 server Checking table 'sysobjects' (object ID 1): Logical page size is 4096 bytes.
00:00000:00001:2010/09/13 14:00:31.10 server
00:00000:00001:2010/09/13 14:00:31.10 server Checking partition 'sysobjects_1' (partition ID 1) of table 'sysobjects'. The logical page size of this table is 4096 bytes.
00:00000:00001:2010/09/13 14:00:31.15 server
00:00000:00001:2010/09/13 14:00:31.29 server Checking table 'systypes' (object ID 4): Logical page size is 4096 bytes.
00:00000:00001:2010/09/13 14:00:31.29 server
00:00000:00001:2010/09/13 14:00:31.29 server Checking partition 'systypes_4' (partition ID 4) of table 'systypes'. The logical page size of this table is 4096 bytes.
转化完毕后,已正常模式再次重新启动ASE数据库。
启动日志的最后有:
00:00000:00001:2010/09/13 14:30:12.67 server ASE's default unicode sort order is 'binary'.
00:00000:00001:2010/09/13 14:30:12.67 server ASE's default sort order is:
00:00000:00001:2010/09/13 14:30:12.67 server 'bin_utf8' (ID = 50)
00:00000:00001:2010/09/13 14:30:12.67 server on top of default character set:
00:00000:00001:2010/09/13 14:30:12.67 server 'utf8' (ID = 190).
00:00000:00001:2010/09/13 14:30:12.67 server Master device size: 60 megabytes, or 30720 virtual pages. (A virtual page is 2048 bytes.)
由上可以看出,ASE数据库的默认字符集已经被设置为:utf8。
检验utf8字符集是否配置成功
在cmd下执行: isql –Usa –P –Swin2003server –Jcp936登录ASE数据库。
1> sp_configure "default character set id"
2> go
Parameter Name Default Memory Used
Config Value Run Value Unit
Type
—————————— ——————– ———–
——————– ——————– ——————–
———-
default character set id 2 0
190 190 id
static
(1 row affected)
(return status = 0)
1> select id,name from master..syscharsets where id = 190
2> go
id name
— ——————————
190 utf8
(1 row affected)
1>
至此,utf8字符集修改成功!
2.2用命令行工具调整字符集为utf8
检查当前ASE数据库中是否安装了utf8字符集?
select id,name from master..syscharsets
where name='utf8'
go
如果有返回结果,则证明ASE服务器已经安装了utf8字符集。utf8字符集的id一般为190。
如果未安装字符集utf8,则在cmd下执行:
cd /d %sybase%\charsets\utf8
charset -Usa -P -Swin2003server binary.srt utf8 (sa的密码为空,服务名称为:win2003server)
反馈信息如下:
C:\sybase\charsets\utf8>charset -Usa -P -Swin2003server binary.srt utf8
Loading file 'binary.srt'.
Found a [sortorder] section.
This is Class-1 sort order.
Finished loading the Character Set Definition.
Finished loading file 'binary.srt'.
1 sort order loaded successfully
再次检查当前ASE数据库中是否安装了utf8字符集?
select id,name from master..syscharsets
where name='utf8'
go
反馈信息如下:
1> select id,name from master..syscharsets
2> where name='utf8'
3> go
id name
— ——————————
190 utf8
(1 row affected)
说明已经安装了utf8字符集。
配置默认字符集为:utf8
sp_configure “default character set id”,190
go
之后重启ASE数据库两次。
检验utf8字符集是否配置成功
1> sp_configure "default character set id"
2> go
Parameter Name Default Memory Used
Config Value Run Value Unit
Type
—————————— ——————– ———–
——————– ——————– ——————–
———-
default character set id 2 0
190 190 id
static
(1 row affected)
(return status = 0)
1> select id,name from master..syscharsets where id = 190
2> go
id name
— ——————————
190 utf8
(1 row affected)
1>
至此,utf8字符集修改成功!
3将数据库默认语言调整为中文
请确保在Sybase ASE15.0.3程序文件安装过程中,已经选择了“Chinese Language Module”模块。如果没有选择,可以重新执行安装程序,添加这个模块。
3.1用图形界面工具添加并设置中文为默认语言
菜单:开始>所有程序>Sybase>Adaptive Server Enterprise>Server Config
(或者:
cd /d %sybase%\%sybase_ase%\bin
syconfig
)
左边的产品列表选择Adaptive Server,点“配置Adaptive Server”按钮,选择要配置的服务器:WIN2003SERVER
输入sa的口令:
进入到配置Adaptive Server窗口
选择“语言”按钮,
可以看到当前缺省值中的语言为:us_english。点“语言”下面的“添加/删除”按钮,
在安装语言窗口中添加中文语言Chinese。点确定返回到语言选项窗口,点击“语言”下的“设置缺省值”按钮,
在更改缺省语言窗口中选择Chinese,点确定,返回到语言选项窗口,
点确定,再点保存按钮。进行安装语言的过程中,
这时候开始安装中文语言。安装过程会将sysmessages系统表中添加中文语言信息。
配置完成后返回到窗口。点退出则完成默认语言的配置。
3.2用命令行工具添加并设置中文为默认语言
在ASE服务器中安装中文语言:
cd /d %sybase%\%sybase_ase%\bin
langinst -Usa -P -Swin2003server chinese (sa的密码为空,数据库服务名为:win2003server)
反馈信息为:
C:\sybase\ASE-15_0\bin>langinst -Usa -P -Swin2003server chinese
Loading datetime information from file C:\sybase/ASE-15_0/locales/chinese/common
.loc.
Loading system messages from file C:\sybase/ASE-15_0/locales/chinese/server.loc.
9075 Messages processed.
Loading complete.
Summary: 0 deleted, 8640 inserted, 0 updated, 435 duplicates, 0 unsuccessful.
用isql设定默认语言为中文:
在cmd下执行: isql -Usa –P –Swin2003server –Jcp936 登录ASE数据库。
检查中文语言是否已经成功安装?
select langid,name from master..syslanguages
go
如果返回结果为1行,则说明中文语言已经成功安装了。
配置ASE数据库默认语言为中文:
sp_configure "default language id",1
go
3.3验证ASE默认语言为中文
用isql登录ASE,
isql –Usa –Jcp936 (当前数据库的字符集为utf8,客户端连接时需要使用cp936,否则中文会出现乱码)
select @@language
如果返回结果为:Chinese,则表示默认语言已经修改为中文了。
3.4修改登录账号的默认语言为中文
查看登录账号的默认语言:
sp_displaylogin sa
go
Suid: 1
登录名: sa
全名:
缺省数据库: master
缺省语言:
自动登录脚本:
已配置的特权:
sa_role (default ON)
sso_role (default ON)
oper_role (default ON)
sybase_ts_role (default ON)
mon_role (default ON)
js_admin_role (default ON)
被锁定: 否
最后口令改变日期: 十一月 27 2009 12
口令截止间隔: 0
口令到期: NO
最小口令长度: 6
登录失败次数的最大值: 0
当前已失败的登录次数:
请用 AUTH_DEFAULT 进行鉴定
登录口令加密:SHA-256
上一次登录日期:
(return status = 0)
修改登录的默认语言为中文:
sp_modifylogin sa,deflanguage,chinese
go
再次检验登录账号的默认语言:
1> sp_displaylogin sa
2> go
Suid: 1
登录名: sa
全名:
缺省数据库: master
缺省语言: chinese
自动登录脚本:
已配置的特权:
sa_role (default ON)
sso_role (default ON)
oper_role (default ON)
sybase_ts_role (default ON)
mon_role (default ON)
js_admin_role (default ON)
被锁定: 否
最后口令改变日期: 十一月 27 2009 12
口令截止间隔: 0
口令到期: NO
最小口令长度: 6
登录失败次数的最大值: 0
当前已失败的登录次数:
请用 AUTH_DEFAULT 进行鉴定
登录口令加密:SHA-256
上一次登录日期:
(return status = 0)
标签: utf8字符集
本文链接: http://www.dbainfo.net/sybase-ase-1503-character-set-utf8-chinese-language.htm
版权所有:本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
转载务必注明原始出处:Sybase数据库技术,数据库恢复 http://www.dbainfo.net |
|