sybase cp850 生僻汉字解决办法

合集下载

SYBASE数据库字符集问题

SYBASE数据库字符集问题

SYBASE数据库字符集问题最近做一个项目,需要使用SYBASE数据库。

基本功能就是从SYBASE中读取信息在页面显示。

页面字符集是UTF-8SYBASE默认字符集是 ENCGB本来功能是正常的。

最近发现一个问题,在数据库中保存一些生僻字后,如果直接用isql在SYBASE数据库里写是可以正常保存的。

例如:喆,在数据库里保存是正常的。

但是通过JDBC连接数据库,读出来的却是“?”连接数据库的URL是这样写的。

jdbc:sybase:Tds:localhost:5007/myDB?charset=cp936普通汉字都可以正常的进行读写,只有那些生僻字无法显示。

SYBASE数据库中也添加了cp936字符集。

但是还是无法正常读写生僻汉字。

数据库的默认字符集不允许改为“CP936”,所以只能在连接字符串上添加字符集CP936大家有没有遇到过这种问题。

通过JDBC连接SYBASE获取的结果是什么字符集的呢?可以在读写的时候对字符串的编码进行转换吗?问题补充dong706gmail 写道你的问题我也碰到过,一开始设置的连接字符集是utf-8,结果读取不了生僻字。

把连接字符集设置为 gb18030 就可以了。

String url ="jdbc:sybase:Tds:10.25.36.21:4100?charset=gb18030";连接字符设置为GB18030后,直接报错ava.sql.SQLException: JZ0I5: 指定了一个无法识别的CHARSET 属性: gb18030。

atcom.sybase.jdbc3.jdbc.ErrorMessage.raiseError(ErrorMessage.jav a:552)at com.sybase.jdbc3.tds.Tds.setCharConvert(Tds.java:3208) at com.sybase.jdbc3.tds.Tds.setCharConvert(Tds.java:3158) at com.sybase.jdbc3.tds.Tds.login(Tds.java:413)atcom.sybase.jdbc3.jdbc.SybConnection.tryLogin(SybConnection.j ava:247)atcom.sybase.jdbc3.jdbc.SybConnection.regularConnect(SybConn ection.java。

JavaJDBC连接Sybase数据库中文乱码问题

JavaJDBC连接Sybase数据库中文乱码问题

JavaJDBC连接Sybase数据库中文乱码问题Java JDBC 连接Sybase数据库中文乱码问题例子:环境MyEclipse Blue Edition 10sybase11jdbc驱动jconn3.jarjava代码:import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;public class ChaXun {public static void main(String[] args) {Connection conn = null;String user = "XXX";String passwd = "XXXXXXXX";try {Class.forName("com.sybase.jdbc3.jdbc.SybDriver").newInsta nce();String url = "jdbc:sybase:Tds:XXX.XXX.XXX.XXX:XXXX/XXXX_db";conn = DriverManager.getConnection(url+"?user="+user+"&password ="+passwd);if(conn == null){System.out.println("连接数据库失败");}else{System.out.println("连接数据库成功");Statement stmt=conn.createStatement();String sql="SELECT yhid,yhmc,yhmm FROM XXXXXX"; // 生成sql语句ResultSet rs=stmt.executeQuery(sql); // 执行sql语句int id;String username,pwd;System.out.println("id\t用户名\t密码");while(rs.next()){id=rs.getInt("yhid");username=rs.getString("yhmc");pwd=rs.getString("yhmm");System.out.println(id+"\t"+username+"\t"+pwd); // 输入查询结果}stmt.close();conn.close();}} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}运行这个代码后发现输出中文字段全是乱码最后在修改conn = DriverManager.getConnection(url+"?user="+user+"&password ="+passwd);为conn = DriverManager.getConnection(url+"?user="+user+"&password ="+passwd+"&charset=cp936");显示正常。

银行信息系统生僻汉字处理方法

银行信息系统生僻汉字处理方法

银行信息系统生僻汉字处理方法毛淑平【摘要】@@ 网点柜员在办理业务时,经常会出现一些系统中不存在或不能处理的汉字,影响业务的开展.特别是在过去软硬件系统比较陈旧的情况下,会出现生僻字无法输入和打印的状况.对信息系统而言,汉字生僻字是指系统软、硬件环境不能够支持的汉字.本文所指的生僻字是指GBK字符集范围之外的汉字字符.【期刊名称】《中国金融电脑》【年(卷),期】2010(000)005【总页数】4页(P59-62)【作者】毛淑平【作者单位】中国工商银行股份有限公司软件开发中心【正文语种】中文网点柜员在办理业务时,经常会出现一些系统中不存在或不能处理的汉字,影响业务的开展。

特别是在过去软硬件系统比较陈旧的情况下,会出现生僻字无法输入和打印的状况。

对信息系统而言,汉字生僻字是指系统软、硬件环境不能够支持的汉字。

本文所指的生僻字是指GBK字符集范围之外的汉字字符。

一、字符集概述1.GB2312编码字符集1980年的GB2312-1980一共收录了7445个字符,包括6763个汉字和682个其他符号。

汉字区的内码范围高字节从B0-F7开始,低字节从A1-FE开始,占用的码位是72×94=6768。

其中有5个空位是D7FA-D7FE。

GB2312-1980,选入了6763个汉字,分为两级,一级字库中有3755个,是常用汉字,二级字库中有3008个,是次常用汉字;另外,还选入了682个字符,包含有数字、一般符号、拉丁字母、日文假名、希文字母、俄文字母、拼音符号、注音字母等。

2.GB13000-90(GBK)国际标准化组织为了将世界各民族的文字进行统一编码,制定了UCS标准。

根据这一标准,中、日、韩三国共同制定了《CJK统一汉字编码字符集》,其国际标准号为ISO/IEC10646,国家标准号为GB13000-90,该汉字编码字符集就是通常人们所说的大字符集,它编入了20902个汉字,收集了大陆一二级字库中的简体字,台湾地区《通用汉字标准交换码》中的繁体字,58个香港地区特别用字和92个延边地区朝鲜族“吏读”字,甚至涵盖了日文与韩文中的通用汉字,满足了方方面面的需要。

如何解决Sybase数据库乱码问题详解

如何解决Sybase数据库乱码问题详解

如何解决Sybase数据库乱码问题详解搭建测试数据库服务器时,遇到了乱码问题,之前没有遇到是因为开发数据库服务器是早就安装好并设置好字符集的,因此些问题在部署测试环境时才出现,当时已经将数据库配置完毕,并且所有的初始化脚本都已经执行完毕,工程也已经成功部署在WebLogic上,打开IE,运行程序,却发现所有从数据库中读取出来的都是乱码,经过上网搜索的相关资料,需要设置字符集,但刚开始查找到的资料基本是都是支言片语,没有一个系统的讲解如何设置字符集,几乎将他们所有的方法都试过了,结果不但没有弄好,甚至连控制台和SQL平台都是乱码了,实在弄不明白了,就去问高人了,他给我发了一个专门讲解字符集的文档,讲的很全面,而且通过他的帮忙终于将解决了乱码问题。

下面我总结一下设置字符集的过程:1、安装完Sybase后,如果要想设置字符集为CP936,就必须先安装该字符集,因为Sybase默认的字符集表中并没有该字符集,安装步骤如下:(这里 SYBASE 的安装路径为c:\sybase) 1.c:\>;cd \sybase\charsets\cp9362.c:\sybase\charsets\cp936>; charset -Usa -Psa_pass -Sserver_name binary.srt cp936通过上述命令就成功将CP936字符集安装表Sybase的系统字符集表中,但必须重启Sybase服务两次才能看到结果,可以通过查看 master 数据库中的syscharsets表查看是否已经安装成功,我们可以看到已经安装成功了:1002,171,0,1,'cp936', 'CP936 (Simplified Chinese).',’…’2、看到CP936的编号为171,我们需要在Sybase的属性中设置系统字符集为该ID,如下图所示:如果设置完字符集成出现错误,是因为master数据库的表空间默认只分配几百K的空间,导入新的数据后已经没有足够的空间了,所以要对master数据库设置大一些的表空间,点击master数据库右键属性,选择表空间的tab页,对原有的表空间编辑重新分配大小,将master所有的表空间都分配了就可以解决该问题。

Sybase问题集整理

Sybase问题集整理

Sybase数据库问题集整理1.ASE12.5.4服务器默认字符集为utf8,默认语言为中文,客户端使用字符集utf8连接时汉字出现乱码问题解决方法:将客户端的连接字符集指定为cp9362.ASE15.0.3在windows 2003 server x64上安装进行到配置服务时,配置self manage的用户名和密码分别为job_user/job_user,服务创建时出错,报:创建自管理的用户或登录失败解决方法:仅在测试环境上发现此问题。

暂时解决方法,配置自管理的用户名为sa,密码为默认的空3.用server config图形工具欲将系统默认字符集配置为cp936,添加字符集的可用字符集列表中没有cp936解决方法:手动添加cp936字符集。

cd %sybase%\charsetscharset –Usa –P –Sservername binary.srt cp936然后通过系统存储过程sp_configure 将参数:default character set id 调整成cp936的id,可能为171,需要查询select id,name from master..syscharsets where name=’cp936’重启ASE两遍后,字符集就调整好了。

4.在windows 2008 R2上安装ASE15.0.3ESD#1时,不能创建主服务、备份服务等。

提示无法执行二进制程序sqlsrvr.exe等。

原因:此为操作系统兼容问题!错误信息见文件:windows2008R2-install-error.txt解决方法:先安装ASE15.0.3ESD#1,先不创建数据库服务,将程序升级到ASE15.0.3ESD#3(或者目前最新的ESD#4),然后再创建数据库服务。

另外,ASE15.5在windows2008R2上不存在兼容问题。

5.不能执行远程服务器上的命令,如: SYB_BACKUP…sp_who等。

SYBASE常见问题

SYBASE常见问题

SYBASE常见问题1.Sybase数据库日志满碰到这种情况,常会出现能查询数据,但无法更新数据,启动事务等。

在代码中跟踪可以发现,连接能够打开,但事务却无法开启。

常会提示“Connection to Sybase server has been lost. All active transactions have been rollbacked”的错误信息。

解决办法:若是开发数据库,则直接清除日志即可。

若是正式数据库:建议备份当前日志再清空日志,扩日志设备及日志数据库。

清空日志的语句为『dump transaction database_name with no_log 』2.Sybase中文乱码出现这种情况的原因是sybase的服务器字符集不支持中文或是客户端的字符集与服务端字符集不一致。

可以考虑更改sybase的默认字符集。

在Sybase12.5的版本中支持中文的字符集有CP936、EUCGB、UTF-8和GB18030。

这里我们针对Sybase 服务器字符集不支持中文给出解决办法:解决办法(安装cp936字符集):假设sybase的安装路径为"D:\Sybase"。

(1)D:\>cd \sybase\charsets\cp936(2) D:\sybase\charsets\cp936> charset -Usa -Psa_pass -Sserver_name binary.srt cp936(3) 在InterActiveSQL中执行『select name,id from syscharsets』,需注意的是这里要选择在“master”数据库下执行,第4步也是。

找到name为cp936的ID,假定是171。

(4)在InterActiveSQL中执行『sp_configure 'default character set id',171』(5) 重启Sybase服务两次。

一招搞定生僻汉字的输入

一招搞定生僻汉字的输入

一招搞定生僻汉字的输入在通过各种中文输入法进行汉字录入时,经常会遇到一些生僻的汉字,特别是录入人名、地名和古籍时,如镕、喆、旸、珺、芃、翀等,就显的非常棘手。

下面介绍一招搞定生僻汉字输入的方法,这里不需要安装硬件(如手写板),不需要借助软件(如五花八门的输入法),也不需要知道这个汉字的读音,只要是一台能上网的电脑,只要有鼠标,就能迅速搞定任何一个生僻汉字的输入,不管是只有一画的“乁”字,还是笔画最多的“龘”字。

百度刚推出的手写输入法,在解决生僻汉字输入问题上非常便捷有效,进一步诠释了“简单可依赖”的百度特色。

手写输入法其实是为不熟悉拼音以及老人、残障人士等各种不方便使用键盘的用户设计的,在百度老年搜索频道(/)很早就已采用。

遇到生僻汉字时,您可能这时是在聊天,可能是在使用Word编辑排版,也可能是在使用其他软件需要进行文字录入。

不管您在做什么工作,只要按以下步骤操作后,使用选择、复制、粘贴的方法即可完成生僻汉字的输入。

具体操作步骤如下:1.打开浏览器,进入百度首页()(如图1)。

2.点击百度搜索框右侧的链接,选择方式。

3.单击链接(如图2),打开手写面板。

4.用按住鼠标左键拖动的方式在手写板中写字(如图3),每次限写一个字。

从右侧选择确定您想输入的生僻汉字,选择的字便显示在百度搜索框中,输入工作即已成功。

当选择确定您想输入的汉字后,会在写字板右侧为您自动反馈常用的联想词,在百度搜索框下面也同时显示常用的联想词或句子。

说明:百度在线输入法又称作百度云输入法。

分为拼音输入法和手写输入法。

可以应用于Google Chrome浏览器、搜狗高速浏览器、傲游浏览器等主流浏览器上。

但使用方法略有差异:IE与Firefox中启用在线拼音输入法后桌面输入法被屏蔽,在线拼音输入法可以直接使用;但在其他浏览器中启用百度在线输入法后需要先关闭桌面输入法,将输入法状态调至英文输入状态时才能使用百度在线拼音输入法。

借助强大的中文识别能力、丰富的词条联想功能以及百度搜索自带的关键词联想功能,任何不懂中文输入法的用户不用再借助手写板等辅助工具也可流畅完成任何生僻汉字的录入,而且使用该功能不需要安装任何网页插件,直接调用即可。

一招搞定生僻汉字的输入

一招搞定生僻汉字的输入

- -/2011.11/一招搞定生僻汉字的输入仙桃职业学院 郭 萍在通过各种中文输入法进行汉字录入时,经常会遇到一些生僻的汉字,特别是录入人名、地名和古籍时,如镕、喆、旸、珺、芃、翀等,就显的非常棘手。

下面介绍一招搞定生僻汉字输入的方法,这里不需要安装硬件(如手写板),不需要借助软件(如五花八门的输入法),也不需要知道这个汉字的读音,只要是一台能上网的电脑,只要有鼠标,就能迅速搞定任何一个生僻汉字的输入,不管是只有一画的“乁”字,还是笔画最多的“龘”字。

百度刚推出的手写输入法,在解决生僻汉字输入问题上非常便捷有效,进一步诠释了“简单可依赖”的百度特色。

手写输入法其实是为不熟悉拼音以及老人、残障人士等各种不方便使用键盘的用户设计的,在百度老年搜索频道(/)很早就已采用。

遇到生僻汉字时,您可能这时是在聊天,可能是在使用Word编辑排版,也可能是在使用其他软件需要进行文字录入。

不管您在做什么工作,只要按以下步骤操作后,使用选择、复制、粘贴的方法即可完成生僻汉字的输入。

具体操作步骤如下:1.打开浏览器,进入百度首页()(如图1)。

2.点击百度搜索框右侧的链接,选择方式。

3.单击链接(如图2),打开手写面板。

4.用按住鼠标左键拖动的方式在手写板中写字(如图3),每次限写一个字。

从右侧选择确定您想输入的生僻汉字,选择的字便显示在百度搜索框中,输入工作即已成功。

当选择确定您想输入的汉字后,会在写字板右侧为您自动反馈常用的联想词,在百度搜索框下面也同时显示常用的联想词或句子。

说明:百度在线输入法又称作百度云输入法。

分为拼音输入法和手写输入法。

可以应用于Google Chrome浏览器、搜狗高速浏览器、傲游浏览器等主流浏览器上。

但使用方法略有差异:IE与Firefox 中启用在线拼音输入法后桌面输入法被屏蔽,在线拼音输入法可以直接使用;但在其他浏览器中启用百度在线输入法后需要先关闭桌面输入法,将输入法状态调至英文输入状态时才能使用百度在线拼音输入法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

当服务器端的字符集默认安装是cp850,在输入汉字时服务器与客户端字符集不一样,要进行转换。

存入数据:new String(str.getBytes("gbk"),"iso-8859-1");
取出数据:new String(str.getBytes("iso-8859-1"),"gbk");
但是cp850只支持1,2级汉字,对于生僻汉字,此种转换机制就行不通了.
下面方法解决该问题。

存入数据:toIso(str);
取出数据:toGbk(str);
public static String toIso(String str) throws UnsupportedEncodingException{
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
String s = str.substring(i, i + 1);
byte[] bg = s.getBytes();
boolean change = false;
for(byte b:bg) {
int i_b = 0xFF & b;
if(i_b>0x7f&&i_b<0xa0){
change = true;
}
}
StringBuffer s_cha = new StringBuffer();
if(change){
for(byte b:bg) {
s_cha.append("%");
s_cha.append(Integer.toHexString(0xFF & b));
}
sb.append(s_cha.toString());
}else{
sb.append(s);
}
}
String gbk = sb.toString();
return new String(gbk.getBytes("gbk"),"iso-8859-1");
}
public static String toGbk(String str) throws UnsupportedEncodingException{
String gbk = new String(str.getBytes("iso-8859-1"),"gbk");
Pattern p = pile("%\\w\\w%\\w\\w");
Matcher m = p.matcher(gbk);
while(m.find()){
String o = m.group();
String[] ss = o.split("%");
byte[] b = new byte[2];
b[0] = (byte)Integer.parseInt(ss[1], 16);
b[1] = (byte)Integer.parseInt(ss[2], 16);
gbk =gbk.replace(o, new String(b,"gbk"));
}
return gbk;
}。

相关文档
最新文档