`
董宗磊
  • 浏览: 65416 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Sybase字符集设置(附jconnect支持的 Sybase 字符集)

阅读更多

1、如何查看服务器端、客户端字符集 
  查看服务器端字符集: 
  在isql环境中执行:

       C:\Documents and Settings\Administrator>isql -Usa -Ptest02 -Ssyb125
  1> sp_helpsort 
  2> go 
  查看客户端字符集: 
  在isql环境中执行: 
  1> select @@client_csname 
  2> go

 

2、如何配置服务器端默认字符集

UNIX平台上使用sqlloc命令或者编辑sqlloc.rs脚本文件;Windows平台使用“服务器配置”图形化管理工具直接配置服务器端字符集。

(1)UNIX平台

  配置服务器端字符集的方法 sqlloc
  在$SYBASE_OCS/bin目录下执行:sqlloc,将出现一个图形化界面,在这个界面中您可以直接选择语言集,字符集,排序顺序,便很容易地就完成了配置工作。 
  编辑sqlloc.rs脚本文件 
   将$SYBASE-ASE/init/sample_resource_files/sqlloc.rs拷贝到$SYBASE_OCS/bin目录下,按以下黑体字提示编辑该文件: 
  sybinit.release_directory: /home/sybase―――输入Sybase产品的安装路径 
  sqlsrv.server_name: SYB125―――输入数据库服务器的名称 
  sqlsrv.sa_login: sa 
  sqlsrv.sa_password: ―――输入sa的口令,若为空,则什么也不填 
  sqlsrv.default_language: us_english―――输入想要配置的语言集 
  sqlsrv.language_install_list: USE_DEFAULT 
  sqlsrv.language_remove_list: USE_DEFAULT 
  sqlsrv.default_characterset: cp850―――输入想要配置的字符集 
  sqlsrv.characterset_install_list: USE_DEFAULT 
  sqlsrv.characterset_remove_list: USE_DEFAULT 
  sqlsrv.sort_order: binary―――输入想要配置的排序顺序 
  # An example sqlloc resource file... 
  # sybinit.release_directory: USE_DEFAULT 
  # sqlsrv.server_name: PUT_YOUR_SERVER_NAME_HERE 
  # sqlsrv.sa_login: sa 
  # sqlsrv.sa_password:  
  # sqlsrv.default_language: french 
  # sqlsrv.language_install_list: spanish,german 
  # sqlsrv.language_remove_list: USE_DEFAULT 
  # sqlsrv.default_characterset: cp437 
  # sqlsrv.characterset_install_list: mac,cp850 
  # sqlsrv.characterset_remove_list: USE_DEFAULT 
  # sqlsrv.sort_order: dictionary 

  保存已经修改好的sqlloc.rs脚本文件,执行以下命令: 
  sqllocres -r sqlloc.rs 
  注意屏幕上出现的提示信息,如无异常,则完成配置工作。

(2)Windows平台

“服务器配置”管理工具提供了一个易于操作的图形化管理平台,根据工具中提示的信息,很容易就完成了字符集的配置工作。

有时候“服务器配置”管理工具有问题,也可在isql中执行:

C:\Documents and Settings\Administrator>isql -Usa -Ptest02 -Ssyb125
1> select name,id from syscharsets
2> go

找到目标字符集对应的id,假设要将默认字符集设为iso_1,对应id为1

1> sp_configure "default character set id",1
2> go

字符集修改完毕,重启server两次。
(注:第一次启动后,server会自动宕掉,需要第二次重启后才能使用)

 

3、如何配置客户端缺省字符集

配置客户端缺省字符集实际上就是对“$SYBASE\locales”目录下locales.dat文件的修改。

Windows平台用写字板方式打开该文件,在UNIX平台可以直接使用“vi”命令打开该文件,我们会看到,该文将中所有字符集的配置都是以服务器端操作系统平台名称分组的。

其中,操作系统名称放在每一组最开始的“[]”中,而且请注意上面黑体字,每一组中都会存在一行“locale = default,…”。我们要修改客户端的默认字符集,就是对这一行进行修改。 
  例如,某系统服务器端是SUN平台,服务器端语言集为english,字符集为cp850。我们要修改客户端字符集与服务器端一致,怎么做? 首先找到[SUN]操作系统分组,然后修改“locale = default,…”为“locale = default,us_English,cp850”。

保存该文件,就完成对客户端字符集的修改了。

  这里,还要说明一种特殊情况: 
  为了满足服务器端某些应用的特殊需求,在服务器端设置了一个环境变量:LANG,此时客户端字符集该如何设置呢? 
  例如,某系统服务器端是Windows平台,使用语言集english,字符集iso_1,并设置环境变量LANG=C。我们要修改客户端字符集与服务器端一致,怎么做? 
  首先找到[NT]操作系统分组,然后在该组中加入一行 
  “locale = C,us_English,iso_1”

  修改前: 
  [NT] 
  locale = enu, us_english, iso_1 
  locale = fra, french, iso_1 
  locale = deu, german, iso_1 
  locale = japanese, japanese, sjis 
  locale = chs, chinese, eucgb 
  locale = cht, tchinese, big5 
  ; locale = kor, korean, eucksc 
  locale = us_english.utf8, us_english, utf8 
  locale = default, us_english, iso_1 

  修改后: 
  [NT] 
  locale = enu, us_english, iso_1 
  locale = fra, french, iso_1 
  locale = deu, german, iso_1 
  locale = japanese, japanese, sjis 
  locale = chs, chinese, eucgb 
  locale = cht, tchinese, big5 
  ; locale = kor, korean, eucksc 
  locale = us_english.utf8, us_english, utf8 
  locale = default, us_english, iso_1 
  locale = C,us_English,iso_1  
  因此在修改客户端字符集之前,请先查看服务器端是否设置了环境变量“LANG“,再决定如何修改。

 

4、如何选择ASE字符集使之支持简体中文字符

  目前在ASE 12.5中支持中文字符的字符集有四种:CP936,EUCGB,UTF-8和GB18030。 
  其中EUCGB字符集是基于GB2312-80编码规范的,它的EUC (Extended Unix Code)编码范围是第一字节0xA1~0xFE(实际只用到0xF7),第二字节0xA1~0xFE。 
  CP936字符集是基于GBK编码规范(实际上的国家标准是GB13000-90),是对GB2312进行的扩展,第一字节为0x81~0xFE,第二字节分两部分,一是0x40~0x7E,二是0x80~0xFE。其中和GB2312相 同的区域,字完全相同。 
  GB18030字符集(国家标准号是GB18030-2000)是2000年3月17日发布的新的中文编码标准。它是GB2312的扩充,采用单/双/四字节编码体系结构,收录了27000多个汉字以及臧文、蒙文、维吾尔文等主要的少数民族文字。Sybase 从ASE 12.5.0.3之后开始支持GB18030字符集。 
  UTF-8字符集是现有ASCII系统向Unicode转换的一个过渡方案。它使用1-3字节表示一个字符。简体中文的每个字符在utf8中的长度基本上都是3个字节。它的最主要的优点是可以同时支持超过650种语言的字符。缺点是针对中文字符来说,需要增加50%的空间用来存储。还有一个问题是执行sp_helptext显示存储过程体的时候,有可能出现半个汉字。 
  一般来说,由于EUCGB不支持国标一、二级字库以外的汉字,所以我们推荐用户在服务器端和客户端都使用CP936字符集,或者在ASE 12.5.0.3之后还可以使用GB18030字符集,它可以支持一些比较生僻的汉字。它的不足是只有一种排序方式,即区分大小写的Binary方式。所以,如果需要使用支持中文字符集且不区分大小写的数据库时,就只能使用UTF-8作为服务器端字符集,而客户端使用CP936或GB18030字符集。 
  另外,还有一种选择是,服务器端和客户端都使用iso_1字符集,虽然iso_1字符集并不直接支持中文字符,但我们将服务器端和客户端都设置成iso_1字符集后,系统也不会在客户端和服务器端进行字符转换,它只不过将一个汉字的两个字节当做两个单独字符来处理,一般情况下没有问题。但当执行like匹配查询的时候,它有可能返回不正确的结果,原因是服务器端是根据单字节去匹配查询条件的,很可能会有前一个汉字的第二字节与后一个汉字的第一字节的内码组合符合查询条件,被服务器端作为查询结果返回来。

 

5、如何安装cp936字符集 
  以在Windows平台安装cp936字符集为例,说明如何安装使用服务器中没有被默认安装的字符集。(在ASE 12.5.0.3版本中安装GB18030字符集的方法类似) 
  (这里SYBASE的安装路径为c:\sybase) 
  1.c:\>cd \sybase\charsets\cp936 
  2.c:\sybase\charsets\cp936> charset -Usa -Psa_pass -Sserver_name binary.srt cp936 
  3.在isql环境中 1>select name,id from syscharsets 
  2>go 
  找到name为cp936对应的id(假设为171) 
  4.1>sp_configure "default character set id",171 
  2>go 
  重启server两次。 

 

6、jconnect支持的 Sybase 字符集 

 

SybCharset 名称

 

JDK 字节转换程序

 

ascii_7

 

ASCII

 

big5

 

Big5

 

big5hk(参见注意)

 

Big5_HKSCS

 

cp037

 

Cp037

 

cp437

 

Cp437

 

cp500

 

Cp500

 

cp850

 

Cp850

 

cp852

 

Cp852

 

cp855

 

Cp855

 

cp857

 

Cp857

 

cp860

 

Cp860

 

cp863

 

Cp863

 

cp864

 

Cp864

 

cp866

 

Cp866

 

cp869

 

Cp869

 

cp874

 

Cp874

 

cp932

 

MS932

 

cp936

 

GBK

 

cp950

 

Cp950

 

cp1250

 

Cp1250

 

cp1251

 

Cp1251

 

cp1252

 

Cp1252

 

cp1253

 

Cp1253

 

cp1254

 

Cp1254

 

cp1255

 

Cp1255

 

cp1256

 

Cp1256

 

cp1257

 

Cp1257

 

cp1258

 

Cp1258

 

deckanji

 

EUC_JP

 

eucgb

 

EUC_CN

 

eucjis

 

EUC_JP

 

eucksc

 

EUC_KR

 

ibm420

 

Cp420

 

ibm918

 

Cp918

 

iso_1

 

ISO8859_1

 

iso88592

 

ISO8859-2

 

is088595

 

ISO8859_5

 

iso88596

 

ISO8859_6

 

iso88597

 

ISO8859_7

 

iso88598

 

ISO8859_8

 

iso88599

 

ISO8859_9

 

iso15

 

ISO8859_15_FDIS

 

koi8

 

KOI8_R

 

mac

 

Macroman

 

mac_cyr

 

MacCyrillic

 

mac_ee

 

MacCentralEurope

 

macgreek

 

MacGreek

 

macturk

 

MacTurkish

 

sjis

 

MS932

 

tis620

 

MS874

 

utf8

 

UTF8

 

注意: 只有在使用 JDK 1.3 或更高版本时才支持 big5hk 字符集。

分享到:
评论

相关推荐

    Sybase jConnect for JDBC 程序员参考.pdf

    2. **安装与配置**:详细说明了如何安装 jConnect 驱动以及如何配置环境来支持 Java 应用程序与 Sybase 数据库的连接。 3. **基本操作**:包括了如何建立数据库连接、执行 SQL 查询、处理结果集等基本操作的示例代码...

    jConnect™ for JDBC™ 7.0[中文]

    讲解了如何使用jConnect来传递Unicode数据,并且提供了有关jConnect字符集转换程序的信息,以便处理不同字符集之间的转换。 7. 处理数据库 包括了实现高可用性故障切换支持、执行服务器到服务器的远程过程调用、...

    jConnect-6_0

    8. **JDBC 3.0规范兼容**:jConnect-6_0符合JDBC 3.0标准,支持预编译语句、结果集的滚动和分页等高级功能。 9. **易用性**:提供完善的API文档和示例代码,简化开发流程,使开发者能够快速上手。 **在压缩包中的...

    jconnect6.0

    5. **Unicode支持**:全面支持Unicode字符集,使得跨语言的应用程序开发变得更为便捷。 6. **事务管理**:提供强大的事务控制功能,支持分布式事务处理,符合ACID(原子性、一致性、隔离性和持久性)原则。 7. **...

    Sybase 12.5.4 Driver for JDBC

    Sybase JDBC驱动提供了对ASE数据库的这种功能支持,允许Java应用无缝地连接到Sybase数据库,执行SQL命令,并处理返回的结果。 **驱动文件结构** 在提供的描述中,驱动文件位于`./classes`路径下的`jconn2.jar`。这...

    Sybase iq数据库函数整理文档.docx

    `COLLATION '936ZHO'`定义了字符集,`PAGE SIZE 4096`设置了每页的字节数,`JAVA ON`、`JCONNECT ON`、`CASE RESPECT`、`PASSWORD CASE RESPECT`、`IQ PATH`、`IQ SIZE`和`IQ PAGE SIZE`则涉及Java支持、大小写敏感...

    Sybase iq数据库函数整理文档.pdf

    例如,创建名为`myiq.db`的数据库,指定事务日志、字符集、页面大小、启用Java和JConnect,以及设置存储选项等。以下是一个示例脚本: ```sql CREATE DATABASE 'e:\Program Files\Sybase\ASIQ-12_7\myiq\myiq.db' ...

    Sybase-iq数据库函数整理文档 (2).docx

    这段代码设置了数据库的路径、事务日志、字符集、页大小、Java支持、密码策略、IQ数据文件大小和临时文件路径等关键参数。 监控数据库资源使用情况,可以创建名为`myspace`的存储过程,用于查看主数据文件和临时...

    Sybase-iq数据库函数整理文档.docx

    此脚本设置了数据库的路径、事务日志、字符集、页面大小、Java支持、临时表路径等关键参数,并启用最小化存储选项以节省空间。 在监控数据库空间使用情况时,我们可以创建名为`myspace`的存储过程,用于查询主数据...

    JDBC连接各种数据库的各种jar包

    4. **Sybase**:Sybase数据库现在被SAP收购并更名为SAP Adaptive Server Enterprise (ASE)。其JDBC驱动jar包可能命名为`jconn2.jar`(较旧版本)或`jconnect.jar`(新版本)。 5. **MySQL**:MySQL的JDBC驱动jar包...

    sysbaseJDBCdriver6_05.zip

    1. `jutils-2_0`:这是Java工具包的一个版本,通常包含一些通用的辅助类和方法,可能包括字符串处理、数据转换、日期时间操作等,为JDBC驱动程序提供基础支持。 2. `jConnect-6_0`:这是一个特定于Sysbase的JDBC...

    java连接各种数据库大全

    5. **Sybase**:使用jconnect.jar驱动,代码如下: ```java Class.forName("com.sybase.jdbc3.jdbc.SybDriver"); Connection conn = DriverManager.getConnection("jdbc:sybase:Tds:hostname:port/dbname", ...

Global site tag (gtag.js) - Google Analytics