Sybase 中文乱码解决办法

合集下载

Sybase编程中出现的错误及其解决办法-电脑资料

Sybase编程中出现的错误及其解决办法-电脑资料

Sybase编程中出现的错误及其解决办法-电脑资料SYBASE 数据库是当今在UNIX环境下最为流行的大型数据库之一,本人在SYBASE下开发和维护软件的过程中,发现了一些SYBASE 的内部规则,在程序设计中极易造成误解,而达不到预期的目的,。

下文将本人所发现的几个问题及其解决办法叙述如下:1、在sybase11.5中,组合两个定长的char(x)="aaa",char (y)="bbb"; char(x)+char(y)!="aaabbb"declare @val_1 char(8)declare @val_2 char(1)select @val_2 = 'x'select @val_1 = "0000"select @var_1= @val_1 + @val_2select @var_1我们期望的结果为0000x,而实际上其结果为0000。

解决方法一:当我们将"select @var_1=@val_1+@val_2",改为"select @var_1=rtrim(@var_1)+@var_2"时,我们便看到了我们所期望的结果。

为什么呢?在有的SYBASE版本中存储一个char(n)时,在其真实值后补上了相应数量的空格,在本例中,存储在@var_1中的是0000 (在0000后有四个空格)。

你可以加上如下两句来验证:declare @val3 char(10)select @val3 = @val_1 + @val_2select @val3这时你会得到的结果为0000 x (在0000后有四个空格)。

解决方法二:将char 改为 varchar 也可以达到预期的目的,电脑资料《Sybase编程中出现的错误及其解决办法》(https://www.)。

2、用alter table 增加表结构时,虽然用sp_recompile tablename 重编译了所影响的数据库对象,但在运行某些包含"select * from tablename"的存储过程时,存储进程仍不认识用alter table 增加的列。

sybase cp850 生僻汉字解决办法

sybase cp850 生僻汉字解决办法

当服务器端的字符集默认安装是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;}。

在eclipse中中文汉字乱码的解决方案

在eclipse中中文汉字乱码的解决方案

在eclipse中中⽂汉字乱码的解决⽅案
很多童鞋反应在吧项⽬导⼊到eclipse(myeclipse)时中⽂会有乱码,修改了编码格式后还是乱码,这⾥给⼤家介绍⼀下关于中⽂乱码时修改编码的注意事项:
1、当在eclipse中打开⼀个⽂件后发现有中⽂乱码后,千万不能修改这个⽂件内容,⼀旦改过这个⽂件的内容,那怎么修改编码也没⽤了,只能重新导⼊。

2、当打开⽂件发现乱码后第⼀步是关闭这个⽂件,然后在这个⽂件上右键,选择属性,然后选择编码,先选择utf8,然后确认保存后打开⽂件查看是否是乱码,如果还是乱码则继续关掉⽂件,右键选择属性,编码中选择gbk,确认保存后再打开⽂件。

3、基本上以上两种⽅法都能解决乱码,切记修改编码格式的时候⼀定要关闭⽂件,且不可修改过⽂件内容。

4、下⾯以我的⼀个项⽬为例,截图演⽰⼀下操作过程:
如下图所⽰,这个⽂件的中⽂有乱码:
第⼀步,先把打开的这个⽂件关闭,然后在这个⽂件上右键选择属性:
然后选择编码格式,如下图所⽰:
然后点击ok,再打开这个⽂件查看:
发现乱码已经消除了,有时候选择utf8后还是乱码,那么项⽬⽂件可能是gbk,按照上述⽅式操作,编码选择gbk即可,切记关闭⽂件和勿修改⽂件内容两点。

以上就是本次介绍的全部相关知识点,感谢⼤家的学习和对的⽀持。

数据库出现乱码的原因和解决办法

数据库出现乱码的原因和解决办法

数据库出现乱码的原因和解决办法数据库出现乱码的原因和解决办法“在SQL*Plus中insert进的都是中文的,为什么一存入服务器后,再select出的就是”“有的时候,服务器数据先导出,重装服务器,再导入数据,结果,发生数据查询成”……这些问题,一般,是因为字符集设置不对照成的。

很久以来,字符集一直是困扰着众多Oracle爱好者的问题,笔者从事Oracle数据库管理和应用已经几年了,经常接到客户的类似上面提到的有关数据库字符集的“告急”和“求救”,今天,就这个问题打算做一些分析和探讨。

首先,我们要明确什么是字符集?字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包括关系,如us7ascii就是zhs16gbk 的子集,从us7ascii到zhs16gbk不会有数据解释上的问题,不会有数据丢失,oracle对这种问题也要求从子集到超集的导出受支持,反之不行。

在所有的字符集中utf8应该是最大,因为它基于unicode,双字节保存字符(也因此在存储空间上占用更多)。

其次,一旦数据库创建后,数据库的字符集是不能改变的。

因此,在设计和安装之初考虑使用哪一种字符集是十分重要的。

数据库字符集应该是操作系统本地字符集的一个超集。

存取数据库的客户使用的字符集将决定选择哪一个超集,即数据库字符集应该是所有客户字符集的超集。

在实际的应用中,和字符集问题最相关的恐怕就是exp/imp了。

在做exp/imp是,如果client 和server的nls_lang设置是一样的,一般就没有问题。

但是,要在两个不同字符集的系统之间导数据就经常会有这样那样的问题,如,导出时数据库的显示正常,是中文,当导入到其他系统时,就成了乱码,这也是一类常见问题。

对于这个问题,有一个常用的转换方法,首先用一个二进制编辑器(如,UltraEdit)察看到出文件(DMP文件)的第二和第三字节,这两个字节的内容是服务器端的字符集,比如0001,那么在数据库中查找出它代表的字符集:然后,如果在导入数据时需要修改为ZHS16GBK,我们就需要知道如何修改这两个字节才能让他们和ZHS16GBK对应:因此,可以将这两个字节手工修改为0354(不足4位时前面补0),然后就可以正常导入数据了。

eclipse中文乱码修改新方法

eclipse中文乱码修改新方法

eclipse中文乱码修改新方法
网摘自: /joyco773-p-7711998.html
方法背景:想看别人的JAVA项目,导入eclipse后出现中文乱码,在设置了所有的工作空间都为UTF-8以后都没有用,并且项目Resource选项没有GBK选项,或统一选择GBK后会使其他项目出现中文乱码,可以用此方法。

方法原理:逐个修改导入项目的编码文件:org.eclipse.core.resources.prefs 文件
问题:单独修改不管用,或者里边根本没有GBK选项
问题:统一修改整个工作空间的编码为GBK又会导致原有项目中文乱码,而且一般不建议修改为GBK,UTF8是国际编码,它的通用性
比较好
解决步骤:
第一步:切换为Navigator导航器,打开org.eclipse.core.resources.prefs文件,或者在项目根目录文件夹用记事本打开
第二步:修改src文件编码并保存
我这里统一修改为GBK就正常了,自己可以根据需求单独或全部修改
中文恢复正常显示。

中文乱码的解决方法

中文乱码的解决方法

中文乱码的解决方法在进行中文文本处理过程中,可能会遇到乱码的情况,这主要是由于使用了不兼容的编码格式或者在数据传输过程中出现了错误。

下面是一些解决中文乱码问题的方法:1.使用正确的编码方式2.修改文件编码如果已经打开了一个包含乱码的文本文件,可以通过修改文件编码方式来解决问题。

例如,在记事本软件中,可以尝试选择“另存为”功能,并将编码方式改为UTF-8,然后重新保存文件,这样就可以解决乱码问题。

3.检查网页编码当浏览网页时遇到乱码问题,可以在浏览器的“查看”或“选项”菜单中找到“编码”选项,并将其设置为正确的编码方式(例如UTF-8),刷新网页后,乱码问题通常会得到解决。

5.使用转码工具如果已经得知文件的原始编码方式但无法通过其他方式解决乱码问题,可以尝试使用一些转码工具来将文件以正确的编码方式转换。

例如,iconv是一款常用的转码工具,可以在命令行界面下使用。

6.检查数据传输过程在进行数据传输时,特别是在网络传输中,可能会出现数据传输错误导致中文乱码。

可以检查数据传输过程中的设置和参数,确保传输过程中不会造成乱码问题。

7.检查数据库和应用程序设置在进行数据库操作和应用程序开发时,也可能会出现中文乱码问题。

可以检查数据库和应用程序的设置,确保正确地处理和显示中文字符。

8.清除特殊字符和格式有时候,中文乱码问题可能是由于文本中存在特殊字符或格式导致的。

可以尝试清除文本中的特殊字符和格式,然后重新保存或传输文件,看是否能够解决乱码问题。

总结起来,解决中文乱码问题的关键是了解文件的编码方式,并确保在处理过程中使用相同的编码方式。

此外,要注意数据传输过程中的设置和参数,以及数据库和应用程序的设置,确保正确地处理和显示中文字符。

最后,如果以上方法仍然无法解决乱码问题,可以尝试使用专业的转码工具来转换文件的编码方式。

中文乱码解决方案

中文乱码解决方案

中文乱码解决方案中文乱码问题是指在使用计算机软件或操作系统时,中文字符显示为乱码或其他非预期字符的情况。

中文乱码问题通常出现在以下几种情况下:1.编码不一致:中文乱码问题最常见的原因是编码不一致。

计算机中使用的编码方式有很多种,如UTF-8、GB2312、GBK等。

如果文件的编码方式与软件或操作系统的默认编码方式不一致,就会导致中文乱码。

解决该问题的方法是将文件的编码方式转换为与软件或操作系统一致的方式。

2.字体显示问题:中文乱码问题还可能与字体显示有关。

如果计算机中没有安装支持中文的字体,或字体文件损坏,就会导致中文字符显示为乱码或方框。

解决该问题的方法是通过安装正确的字体文件或修复字体文件来解决。

3.网页编码问题:在浏览网页时,如果网页的编码方式与浏览器的默认编码方式不一致,也会导致中文乱码。

解决该问题的方法是在浏览器中手动设置网页编码方式,或在网页头部指定正确的编码方式。

4.数据传输问题:中文乱码问题还可能与数据传输有关。

在进行数据传输时,如果数据的编码方式与传输协议或接收端的要求不一致,就会导致中文乱码。

解决该问题的方法是在数据传输的过程中进行编码转换,或在接收端进行适当的解码操作。

下面是一些常用的解决中文乱码问题的方法:3.设置浏览器编码方式:在浏览器的设置中,可以手动指定网页的编码方式。

可以尝试不同的编码方式,找到正确的方式显示中文字符。

4.检查数据传输设置:如果中文乱码问题是在数据传输过程中出现的,可以检查传输的设置是否一致。

比如,在进行数据库连接时,可以设置数据库的编码方式与应用程序的编码方式一致。

5.使用专业工具:如果以上方法无法解决中文乱码问题,可以考虑使用专业的中文乱码解决工具。

这些工具可以自动检测和修复中文乱码问题,提高处理效率。

总结起来,解决中文乱码问题需要确定问题的原因,然后采取相应的方法进行修复。

在处理中文乱码问题时,尽量使用标准的编码方式和字体文件,避免使用非标准或自定义的编码方式。

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");显示正常。

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

Sybase 中文乱码解决办法
解决Sybase中文问题
(/kingspider/)
(/u/1163490885)
1. JDBC连接串要有字符集设置
修改proxool.xml这个文件
jdbc:sybase:Tds:192.168.3.11:5000/dbserver?charset=cp936 然后在sybase设备中创建数据库dbserver
2. 服务器配置成cp936
(1) 使用isql查看当前已经安装的字符集
isql -Usa -Plongtop
>use master
>go
>select id,name from syscharsets
>go
id name
--- ----------------
0 ascii_8
1 iso_1
2 cp850
20 defaultml
21 thaidict
22 iso14651
24 utf8bin
25 binary
39 altnoacc
45 altdict
46 altnocsp
47 scandict
48 scannocp
50 bin_iso_1
50 bin_cp850
51 dict
52 nocase
53 nocasep
54 noaccent
55 espdict
56 espnocs
57 espnoac
59 rusnocs
64 cyrnocs
65 elldict
69 hundict
70 hunnoac
71 hunnocs
73 turknoac
74 turknocs
129 cp932bin
130 dynix
137 gb2312bn
140 cyrdict
155 turdict
161 euckscbn
163 gbpinyin
165 rusdict
179 sjisbin
192 eucjisbn
194 big5bin
(41 rows affected)
从列表中看出没有安装cp936字符集
(2) 查看当前使用的缺省字符集
>sp_configure "default char"
>go
Parameter Name Default Memory Used Config Value Run Value Unit Type
------------------------------ ----------- ----------- ------------ ----------- -------------------- ----------
default character set id 2 0 2 2 id static
缺省字符集的id是2,查看上面的列表,可以得知是cp850
(3) 因为上面的列表中没有安装cp936,所以就安装cp936字符集
进入目录C:\sybase\charsets\cp936
运行命令 charset -Usa -P –SDELL binary.srt cp936
运行完成后,系统就安装了cp936字符集
(4) 验证是否确实安装了cp936字符集
isql -Usa -Plongtop
>use master
>go
>select id,name from syscharsets
>go
id name
--- ------------------------------
0 ascii_8
1 iso_1
2 cp850
20 defaultml
21 thaidict
22 iso14651
24 utf8bin
25 binary
39 altnoacc
45 altdict
46 altnocsp
47 scandict
48 scannocp
50 bin_iso_1
50 bin_cp850
50 bin_cp936
51 dict
52 nocase
53 nocasep
54 noaccent
55 espdict
56 espnocs
57 espnoac
59 rusnocs
64 cyrnocs
65 elldict
69 hundict
70 hunnoac
71 hunnocs
73 turknoac
74 turknocs
129 cp932bin
130 dynix
137 gb2312bn
140 cyrdict
155 turdict
161 euckscbn
163 gbpinyin
165 rusdict
171 cp936
179 sjisbin
192 eucjisbn
194 big5bin
(43 rows affected)
从列表中可以发现已经安装了cp936,id是171
(5) 把系统的当前缺省字符集设置为cp936
>sp_configure "default char",171
>go
In changing the default sort order, you have also reconfigured SQL Server's
default character set.
Parameter Name Default Memory Used Config Value Run Value Unit Type
------------------------------ ----------- ----------- ------------ ----------- -------------------- ----------
default character set id 2 0 171 2 id static
(1 row affected)
Configuration option changed. Since the option is static, Adaptive Server must
be rebooted in order for the change to take effect.
Changing the value of 'default character set id' to '171' increases the amount
of memory ASE uses by 6 K.
(return status = 0)
然后在刚刚创建的数据库dbserver中建立表和初始数据,进行完这一步即可,无需重启服务。

(6) 重启Sybase服务,使更改生效
第一次重启,系统会对已经存在的数据进行转换,转换完成后自动停止服务,只要再次启动服务就可以了。

(7) 更改DB客户端的字符集
DBArtisan中要更改客户端的字符集为cp936才能连接cp936的服务器
通过菜单\Logfile\Options...打开对话框,选择Connection标签,
更改Client Character输入框的值为cp936。

数据库的charset修改为cp936时,使用isql按如下的方式
isql -Usa -Plongtop -Sdbserver -Jcp936。

相关文档
最新文档