`
bdk82924
  • 浏览: 565482 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Sybase字符集的修改

阅读更多

Sybase服务器端字符集的修改
可以在图形化界面使用sqlloc命令修改sybase服务器端字符集,本文主要讲述命令行下服务器字符集修改操作说明:

2.1 先查询sybase系统中已加载的字符集情况
sybase@wap2atca5:~/sql> isql -Usa -P -Seds
1> select name,id from syscharsets order by name     ------先查出字符集的序号id
2> go
 name                           id 
 ------------------------------ ---
... ...
 iso_1                            1
... ...
(56 rows affected)
1>
2.2 如果sybase没有加载需要的字符集,则加载sybase server中没有的字符集
下面以加载cp936字符集为例
sybase@wap2atca5:~> cd charsets/cp936/
sybase@wap2atca5:~/charsets/cp936> charset -Usa -P -Seds binary.srt cp936
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
sybase@wap2atca5:~/charsets/cp936>
2.3 修改默认字符集
sybase@wap2atca5:~/charsets/cp936> isql -Usa -P -Seds
1> select name,id from syscharsets where name="cp936"
2> go
 name                           id 
 ------------------------------ ---
 cp936                          171

(1 row affected)
1> sp_configure "default character set id",171
2> go
在更改缺省排序顺序的过程中,也会重新配置 ASE 的缺省字符集。
 Parameter Name                 Default     Memory Used Config Value
         Run Value    Unit                 Type      
 ------------------------------ ----------- ----------- ------------
         ------------ -------------------- ----------
 default character set id                 1           0          171
                  170 id                   static    

(1 row affected)
配置选项改变.因为选项是静态的,Adaptive Server必须重启,以使改动生效.
更改 'default character set id' 的值不会增加 Adaptive Server 使用的内存量。
(return status = 0)
然后将sybase重启二次。第一次启动后,server会自动宕掉,需要第二次重启后才能使用。
1> shutdown SYB_BACKUP
2> go
Backup Server: 3.48.1.1: 备份服务器将马上关闭。中断会话。
1> shutdown with nowait
2> go
服务器SHUTDOWN被请求。
ASE 正在终止此进程。
CT-LIBRARY error:
        ct_results(): 网络包层: 内部net library错误: 由于断开使得 Net-Library 的操作中断。
sybase@wap2atca5:~/charsets/cp936>
sybase@wap2atca5:~/ASE-15_0/install> startserver -f RUN_eds
... ...
00:00000:00001:2009/12/03 15:43:54.70 server  Default Sort Order successfully changed.
00:00000:00001:2009/12/03 15:43:54.70 server  ASE shutdown after verifying System Indexes.
00:00000:00001:2009/12/03 15:43:54.70 kernel  ueshutdown: exiting
00:00000:00001:2009/12/03 15:43:54.70 kernel  SySAM: Checked in license for 1 ASE_CORE (2011.04260/permanent/131C 6FD4 1D4C 0E96).
sybase@wap2atca5:~/ASE-15_0/install> startserver -f RUN_eds
2.4 安装语言集
运行命令langinstall -Usa -P -Seds chinese cp936,该步骤时间稍长,须耐心等待。

Solaris:
sybase@Sun280R $ langinstall -Usa -P -Seds chinese cp936
Langinstall will now attempt the installation, ASE will convert messages from 'utf-8' to server's default character set 'cp936'.
Loading datetime information from file /export/home/sybase/ASE-15_0/locales/chinese/common.loc.
Loading system messages from file /export/home/sybase/ASE-15_0/locales/chinese/server.loc.
9075 Messages processed.
Loading complete.
Summary: 0 deleted, 8640 inserted, 0 updated, 435 duplicates,   0 unsuccessful.
sybase@Sun280R $

Linux64:
sybase@wap2atca4:~> langinstall -Swap -Usa -P chinese
Langinstall will now attempt the installation, ASE will convert messages from 'utf-8' to server's default character set 'eucgb'.
Loading datetime information from file /home/sybase/ASE-15_0/locales/chinese/common.loc.
Loading system messages from file /home/sybase/ASE-15_0/locales/chinese/server.loc.
9056 Messages processed.
Loading complete.
Summary: 0 deleted, 8621 inserted, 0 updated, 435 duplicates,   0 unsuccessful.
sybase@wap2atca4:~>

Linux32
sybase@wap2atca5:~> langinstall -Usa -P -Seds chinese eucgb
SQLServer message 4017, state 1, severity 16:
        Neither language name in login record 'chinese' nor language name in syslogins '<NULL>' is an official language name on this ASE. Using server-wide default 'us_english' instead.

Langinstall will now attempt the installation, ASE will convert messages from 'utf-8' to server's default character set '936'.
Loading datetime information from file /home/sybase/ASE-15_0/locales/chinese/common.loc.
Loading system messages from file /home/sybase/ASE-15_0/locales/chinese/server.loc.
9075 Messages processed.
Loading complete.
Summary: 0 deleted, 8640 inserted, 0 updated, 435 duplicates,   0 unsuccessful.
sybase@wap2atca5:~>
2.5 查询字符集命令
sybase@wap2atca5:~> isql -Usa -P -Seds
1> sp_helpsort
2> go
... ...
排序顺序描述
                                                                   
 ------------------------------------------------------------------
 字符集 = 171, cp936                                               
     CP936 (Simplified Chinese).                                   
     Class 2字符集                                                 
 排序顺序 = 50, bin_cp936                                          
     Binary sort order for simplified Chinese using cp936.         
(return status = 0)
1>

1> sp_configure "default character set id"
2> go
 Parameter Name                 Default     Memory Used Config Value
         Run Value    Unit                 Type      
 ------------------------------ ----------- ----------- ------------
         ------------ -------------------- ----------
 default character set id                 1           0          171
                  171 id                   static    

(1 row affected)
(return status = 0)
1>


Sybase客户端字符集的修改
在Windows下使用Sybase客户端连接到Sybase服务器的时候需要注意客户端字符集。
同样,在Solaris/Linux上运行isql连接到Sybase服务器时,也需要注意客户端字符集。如果出现类似如下的提示,那么则需要设置Sybase客户端的字符集
sybase@wap3atca13:~/locales> isql -Usa -P

The context allocation routine failed when it tried to load localization files!!
One or more following problems may caused the failure

Your sybase home directory is /home/sybase. Check the environment variable SYBASE if it is not the one you want!
Using locale name "zh" defined in environment variable LANG
Locale name "zh" doesn't exist in your /home/sybase/locales/locales.dat file
An error occurred when attempting to allocate localization-related structures.
sybase@wap3atca13:~/locales>

sybase@linux:~/ASE-12_5/install> isql -Usa -P -Seds
Msg 2401, Level 11, State 2:
Server 'eds':
Character set conversion is not available between client character set 'iso_1'
and server character set 'eucgb'.
No conversions will be done.
1>

这时候需要进入$SYBASE/locales目录下,编辑locales.dat,找到对应的平台,例如[linux]或者[sun_svr4],然后找到缺省以及当前的语言集,例如zh、zh_CN.UTF-8、zh_CN.gbk等,将语言集的后面的字符集设置为cp936。

系统当前的语言集可以用echo $LANG检查,缺省语言集有C、POSIX、default等。
如果LANG设置为zh_CN.UTF-8、zh_CN.gbk或者zh,那么需要修改locale = zh_CN.UTF-8开头的内容,将后面的字符改为chinese,cp936。
如果语言集设置为zh,locales.dat里面没有,那么还需要在相应的平台下添加一行
  locale = zh, chinese, cp936
这样的纪录。

如下:
$cd  $SYBASE/locales
$ vi  locales.dat
找到[linux]配置组或者[sun_svr4]配置组,
  [linux]
        locale = FRENCH, french, iso_1
        locale = fr, french, iso_1
        locale = fr_BE, french, iso_1
        locale = fr_BE.437, french, cp437
    locale = zh, chinese, cp936
    locale = zh_CN.UTF-8, chinese, cp936
    locale = zh_CN.gbk, chinese, cp936
        locale = zh_CN.gb18030, chinese, gb18030
        locale = zh_CN.GB18030, chinese, gb18030
        locale = zh_TW, tchinese, big5
        …..

此外,找到[linux]配置组或者[sun_svr4]配置组的default一行记录,如:
        locale = default, us_english, iso_1
将default的语言集改为:
locale = default, chinese, cp936
修改保存即可。default这个参数对于缺省LANG以及unset LANG这两个环境生效。

如果LANG设置为C,那么找[linux配置组]的C一行记录,如:
        locale = C, us_english, iso_1
将default的语言集改为:
    locale = C, chinese, cp936
修改保存即可.

然后启动isql观察效果,在iSQL环境中执行:
1> select @@client_csname
2> go

字符集服务器和客户端设置完毕后,确保在本机使用isql登录Sybase不再报错,将.bash_profile或者.profile中的unset LANG去掉。

分享到:
评论

相关推荐

    sybase字符集修改

    Sybase 字符集修改 Sybase 数据库字符集修改是指将 Sybase 数据库的字符集从原来的字符集修改为新的字符集,例如 cp936。下面将详细介绍 Sybase 字符集修改的方法和步骤。 为什么需要修改 Sybase 字符集 在 ...

    sybase字符集的更改

    ### Sybase ASE 字符集更改详解 在数据库管理和维护的过程中,字符集的设置与更改是一项非常重要的工作。本文将详细探讨如何更改 Sybase ASE(Adaptive Server Enterprise)数据库的字符集,包括更改过程中的关键...

    sybase字符集问题

    ### Sybase字符集问题解析 #### 一、Sybase字符集概述 Sybase是一个高性能的关系型数据库管理系统,广泛应用于各种企业级应用中。在Sybase系统中,字符集的正确配置对于确保数据的一致性和准确性至关重要。本文将...

    sybase 字符集转换

    ### Sybase数据库字符集转换详解 #### 一、引言 在使用Sybase数据库时,字符集的选择与配置对于确保数据正确存储与显示至关重要。不同的字符集能够支持不同语言的文字编码,例如,对于中文环境的支持通常需要使用...

    sybase字符集及各种常用字符集介绍

    【Sybase字符集详解】 字符集是数据库管理系统中不可或缺的一部分,尤其在处理多语言环境时。Sybase Adaptive Server Express(ASE)支持多种字符集,确保数据的正确存储和检索。字符集定义了一组字符和它们对应的...

    Sybase数据库更换字符集方法,解决中文乱码问题

    ### Sybase数据库更换字符集方法,解决中文乱码问题 #### 概述 在使用Sybase数据库时,可能会遇到中文显示乱码的情况。这通常是因为系统使用的字符集与实际需要处理的数据字符集不匹配所导致的。为了确保数据正确...

    sybase 修改字符集

    综上所述,修改Sybase字符集涉及多个层面的操作,包括数据库服务器端的配置、客户端环境变量的调整以及必要的系统重启。通过上述步骤,可以有效地解决因字符集不匹配导致的数据展示问题,尤其是在处理中文或其它非...

    sybase数据库配置中文字符集

    Sybase数据库中文字符集配置详解 Sybase数据库中文字符集配置是指在Sybase数据库中正确配置中文字符集的过程,以便正确地存储和显示中文字符。本文将详细介绍Sybase数据库中配置中文字符集的步骤,并对其进行详细的...

    sybase 字符集

    ### Sybase字符集详解 #### 一、概念篇 ##### 1.1 什么是字符集? 字符集(Character Set)是一组符号与数值之间的一种对应关系。它定义了一种编码方式,用来表示文本中的各种字符。不同的字符集适用于不同的语言...

    sybase字符集配置与转化[整理].pdf

    本文将详细解析Sybase字符集的配置与转化方法。 首先,我们关注的是如何禁用或启用字符集转换。在Sybase的isql环境中,可以通过执行`sp_configure`存储过程来更改相关设置。例如,要禁用字符集转换,可以执行`sp_...

    Sybase安装+字符集设置+连接池设置+卸载

    2. 修改现有数据库的字符集:需先备份数据,然后通过`ALTER DATABASE dbname SET CHARSET utf8`命令更改。 3. 调整客户端连接参数:确保客户端应用程序使用的字符集与数据库匹配,这通常在连接字符串中指定。 然后...

    Sybase ASE的字符集知识集锦

    - 安装特定的字符集,如CP936,是为了支持特定语言的数据存储,这通常涉及安装额外的库或修改配置文件。 综上所述,理解并正确配置Sybase ASE的字符集对于确保数据的准确性和跨平台的兼容性至关重要。无论是开发...

    Sybase数据库字符转换

    本篇文章将详细阐述如何解决Sybase数据库在默认字符集cp850下对中文支持不足的问题,以及如何进行字符集转换至iso_i或其他更适合中文的字符集。 首先,我们需要了解Sybase数据库默认的字符集是cp850,它主要针对...

    SybaseASE的字符集[参考].pdf

    【Sybase ASE 字符集详解】 Sybase Adaptive Server Enterprise(ASE)是一款强大的关系型数据库管理系统,广泛应用于企业级软件开发。在处理多语言数据时,理解字符集、排序顺序和字符集转换的概念至关重要。 1. ...

    WIN下Sybase生僻汉字

    4. **重启服务器**:修改字符集配置后,必须重启服务器两次。首次重启后,Sybase数据库服务可能自动停止,需要再次启动才能应用新的字符集设置。 这个过程的详细步骤可以参考链接:...

    Sybase数据库资料

    2. 字符集修改 字符集的配置对于数据库来说至关重要,它关系到数据的正确存储和检索。Sybase数据库支持多种字符集,字符集的修改通常在数据库创建或配置阶段进行,以确保数据库能够正确处理不同的语言数据。字符集的...

    Web开发字符集相关知识

    以Sybase为例,服务器端字符集可以通过`sp_configure "default character set id"`进行配置,而客户端连接的字符集可以在连接命令中指定,如`C:\isql -SServerName -UUserName -PPassword -Jcp850`。数据库中的数据...

Global site tag (gtag.js) - Google Analytics