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 生僻汉字解决办法
当服务器端的字符集默认安装是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(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中文乱码修改新方法
网摘自: /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数据库中文乱码问题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");显示正常。
乱码处理方法
乱码处理方法
以下是 6 条关于乱码处理方法:
1. 哎呀,要是遇到乱码,咱可以试试换个编码格式呀!就像你穿衣服不搭调,那就换一件试试看嘛,比如从 UTF-8 换到 GBK 啥的。
比如你打开一个文档,全是乱码,这时候赶紧去调调编码格式呀!
2. 嘿,别忘了检查一下你的字体设置呀!有时候字体不对也会出现乱码呢。
这就好像走路走歪了路,得及时调整方向呀!比如说你在某个软件里看到的字全是乱七不糟的,那很可能就是字体的问题啦,赶紧去瞅瞅!
3. 你知道吗,重新安装相关软件也可能解决乱码问题哟!这就好比生病吃药,有时候得下点猛药才能治好嘛。
像我上次那个软件出现乱码,我把它卸了重装,立马就好啦!
4. 哇塞,清理一下缓存和临时文件也很重要呀!这就跟收拾房间一样,把垃圾清理掉,才能更清爽呀。
你想想,要是电脑里乱七八糟的东西太多,它能不出现乱码嘛。
比如说电脑用久了开始出乱码,那就赶紧清理一下呀!
5. 呀,有时候更新一下驱动程序也能行呢!这就跟给车子升级零件一样,让它跑得更顺畅嘛。
如果电脑显示有乱码,是不是驱动有点跟不上啦,赶紧去更新试试呗!
6. 注意哦,还可能是文件本身损坏导致的乱码呢!这就好像一个苹果烂了一块,会影响整体呀。
像有时候下载的文件一打开全是乱码,很有可能就是文件在下载过程中受损啦!
总之,遇到乱码不要慌,试试这些方法,说不定就能解决啦!。
数据库中乱码问题解决方案
数据库中乱码问题解决方案1. 介绍在数据库中,乱码问题是一个常见的挑战。
当数据被存储、处理或显示时出现乱码,会给用户带来困扰,并可能导致数据不正确地被处理或显示。
本文将探讨数据库中乱码问题的原因,提供解决方案以避免或解决这些问题。
2. 乱码问题的原因乱码问题可能出现在数据库的各个环节,例如数据存储、传输、处理和显示等。
以下是一些常见的乱码问题的原因:2.1 字符集不匹配数据库使用不同的字符集来存储和处理数据。
如果数据的字符集与数据库或应用程序的字符集不匹配,就会导致数据乱码问题。
2.2 编码转换错误在数据传输或处理过程中,可能会进行字符编码的转换。
如果转换过程中存在错误,就会导致数据乱码问题。
2.3 特殊字符处理不当一些字符具有特殊的含义或用途,如果在处理这些字符时不加以考虑,就会导致数据乱码问题。
例如,特殊字符在SQL查询中使用时可能引起问题。
3. 解决方案为了解决数据库中的乱码问题,我们可以采取以下一些措施:3.1 使用统一的字符集确保数据库、应用程序和客户端使用相同的字符集,并将所有数据存储在统一的字符集中。
这样可以避免字符集不匹配导致的乱码问题。
3.2 确保正确的编码转换在进行字符编码转换时,需要确保使用正确的转换算法和目标字符集。
可以使用一些常见的编码库或工具来进行转换,例如Iconv。
3.3 转义特殊字符在处理包含特殊字符的数据时,需要进行适当的转义处理。
例如,在执行SQL查询时,可以使用参数化查询或转义字符来避免特殊字符引起的问题。
3.4 设置正确的字符集和校对规则在创建数据库和表时,需要明确指定正确的字符集和校对规则。
这样可以确保数据被正确地存储和处理,从而避免乱码问题的出现。
4. 示例下面是一些示例代码,演示如何使用解决方案来避免数据库中的乱码问题:4.1 创建数据库和表时设置字符集CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;USE mydb;CREATE TABLE mytable (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;4.2 在应用程序中确认所有数据使用正确的字符集String url = "jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=ut f8";String user = "myuser";String password = "mypassword";Connection conn = DriverManager.getConnection(url, user, password);4.3 执行参数化查询以避免SQL注入问题String sql = "SELECT * FROM mytable WHERE name = ?";PreparedStatement stmt = conn.prepareStatement(sql);stmt.setString(1, "John"; // 参数化查询ResultSet rs = stmt.executeQuery();5. 总结在数据库中,乱码问题是一个常见的挑战。
如何解决Sybase数据库乱码问题详解
如何解决Sybase数据库乱码问题详解Sybase数据库是一种常用的关系型数据库管理系统(RDBMS),它被广泛应用于企业级应用程序的开发和管理中。
然而,在使用Sybase数据库过程中,我们有时会遇到乱码问题。
乱码是指数据库中存储的数据在显示过程中出现了不正常的字符或者无法识别的字符。
本文将详细介绍如何解决Sybase数据库乱码问题。
一、乱码问题的原因分析乱码问题的产生原因非常多样化,下面列举了一些常见的原因:1. 字符集不匹配:数据库中使用的字符集与应用程序中使用的字符集不一致会导致乱码问题。
2. 数据导入不正确:如果在导入数据时未指定正确的字符集,则可能导致数据乱码。
3. 数据存储不正确:如果数据库中存储的字符串没有使用正确的字符集,将会导致乱码问题。
4. 字符串处理不当:在应用程序中对字符串进行处理时,如果没有正确处理字符集,数据可能会出现乱码。
5. 系统环境配置问题:有时,操作系统、数据库软件或应用程序中的某些配置存在问题,也可能导致乱码问题。
二、解决乱码问题的方法针对上述原因,可以采取以下一些解决乱码问题的方法:1. 修改字符集配置:确保数据库中使用的字符集与应用程序中使用的字符集一致。
可以通过修改数据库或应用程序的配置文件来设置正确的字符集。
2. 指定正确的字符集进行导入:在导入数据时,需要指定正确的字符集,以保证数据能够正确地存储到数据库中,避免乱码问题的发生。
可以根据具体情况使用不同的导入工具或命令来完成这个操作。
3. 使用合适的数据类型:在创建数据库表时,选择合适的字符数据类型来存储字符串。
根据具体情况选择varchar、nvarchar等数据类型,并指定正确的字符集。
4. 对字符串进行正确的处理:在应用程序中,对于涉及到字符串处理的操作,需要确保使用了正确的字符集。
比如,对字符串进行拼接、截取、比较、转换等操作时,都需要注意字符集的一致性。
5. 检查系统环境配置:如果乱码问题持续存在,需要检查系统环境配置是否正确,包括操作系统、数据库软件和应用程序的相关配置。
如何解决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所有的表空间都分配了就可以解决该问题。
Eclipse乱码解决方案总结(UTF8--GBK)
Eclipse乱码解决⽅案总结(UTF8--GBK)UTF8 --> GBK; GBK --> UTF8eclipse的中⽂乱码问题,⼀般不外乎是由操作系统平台编码的不⼀致导致,如Linux中默认的中⽂字体编码问UTF8,⽽Windows默认的中⽂编码为GBK,因此将Linux和Windows下的eclipse/Myeclipse项⽬源码在不同平台间的拷贝,都会出现乱码,原因就是中⽂字符编码的不⼀致。
解决办法1:修改⼯作空间的编码格式:Window->Preferences->General->Workspace->Text file Encoding解决办法2:修改单个⼯程的编码格式:右击⼯程,在弹出的菜单中选择最后⼀项“Properties” ,在打开的新窗⼝左边的菜单树中选择 Info(即第⼀个),然后在右⾯找到 Text file encoding ,选择 “other”,在下拉框中选择需要的编码⽅式。
解决办法3:修改⼀类⽂件的编码格式:Window-->Preferences-->General-->Content Types-->把需要的⽂件类型指定⼀种编码,⽐如GBK解决办法4:注意事项:1. 如果项⽬中既有UTF8编码的⼯程,⼜有GBK等编码的⼯程,那么可以将不同编码的项⽬设定在不同的⼯作空间(Swicth Workspace),这样分开进⾏开发,就不会有编码的混乱了。
2. Android NDK 的Native C/C++开发,Java和C/C++编码要⼀致,否则编译会报错。
3. 如果Linux下想⽀持GBK中⽂编码(在Windows下⽂件中的中⽂不乱码),那么需要在系统的编码设置⾥进⾏设定,详细可以⽹络搜索,不赘述。
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常见问题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服务两次。
基于Sybase应用系统中涉及字符集问题的解决方案
406 3 0 8)
摘 要: 本文首先提 出了在 I S RI 2环境 FS b s y a e应用系统 中的常见字符集 问题。紧接着 ,结 合这些问题 ,简单地 介绍了一些 系统字 符集的基础知识 ,包 括字符集的定 义,选择和转换 。然后利用选择 和转换规则结 合实际系统 中的应用情况 ,从 中远集运 各个系统开发 过程 中碰 到的字符集问题出发 ,归纳总结 了常见的几类问题并加以 详细解析 ,利 用在实际项 目中实践 经验 ,对此几类问题进行 了讨论 , 并 给出 了不 同的解决方案 。最后 ,从 I S2系统现 状出 发 ,对 I S2系统 中字 符集使 用现状进 行总结 。 RI RI 关键词 :RI2环境 字符集 解决方案 I S 中图分类号 : P3 T 文献标识码 : A 文章编号 :6 2 7 l2 0 ) 1 ) 0 0 0 l 7 —3 9 (0 6 1( ~ 0 2 2 a
使用 S b s S y ae A E客户端 连接 A E数据 S 库( 数据库字符集为 H o n ) 、写中文 P R ma S读 均为乱码 。 我们 常见 的乱码 大致 有如 下几 种情 形 : 1 汉 字 变成 了 问号 “ ” ) ? 2 有的 汉字显示正 确 ,有的 则显示错 误 ) 3 显示 乱码( ) 有些是汉字但 并不是你预 期
作 系统 。 Lai (S 8 9 1f r tn1 1 08 5 )o UNI 操 作 系 x 统。 I BM EBC C DI US E g ih (B 0 7 nl s IM 3 ) f r an r me系 统 。 o m i fa
4 读 写数据库 出现 乱码 ) 使用 S b s E客户端 访问 AS y ae AS E数据 库时发 现只能取 出部分 汉字( 数据库字符 集为 HP— ma ) Ro n8 比较 典 型的 如 下例 子 : 1对于 v r h r 0 的字段原 来的输入 4 ) aca( ) 4 个汉 字 ,现 在 输 出只 有 3 个 。 Jv 程序或应用服务 器中使 用通过 J B aa D C 连接 S b s AS y ae E数据库读 、写 中文均 为乱
Sybase 中文乱码解决办法
Sybase 中文乱码解决办法解决Sybase中文问题(/kingspider/)(/u/1163490885)1. JDBC连接串要有字符集设置修改proxool.xml这个文件jdbc:sybase:Tds:192.168.3.11:5000/dbserver?charset=cp936 然后在sybase设备中创建数据库dbserver2. 服务器配置成cp936(1) 使用isql查看当前已经安装的字符集isql -Usa -Plongtop>use master>go>select id,name from syscharsets>goid name--- ----------------0 ascii_81 iso_12 cp85020 defaultml21 thaidict22 iso1465124 utf8bin25 binary39 altnoacc45 altdict46 altnocsp47 scandict48 scannocp50 bin_iso_150 bin_cp85051 dict52 nocase53 nocasep54 noaccent55 espdict56 espnocs57 espnoac59 rusnocs64 cyrnocs65 elldict69 hundict70 hunnoac71 hunnocs73 turknoac74 turknocs129 cp932bin130 dynix137 gb2312bn140 cyrdict155 turdict161 euckscbn163 gbpinyin165 rusdict179 sjisbin192 eucjisbn194 big5bin(41 rows affected)从列表中看出没有安装cp936字符集(2) 查看当前使用的缺省字符集>sp_configure "default char">goParameter 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>goid name--- ------------------------------0 ascii_81 iso_12 cp85020 defaultml21 thaidict22 iso1465124 utf8bin25 binary39 altnoacc45 altdict46 altnocsp47 scandict48 scannocp50 bin_iso_150 bin_cp85050 bin_cp93651 dict52 nocase53 nocasep54 noaccent55 espdict56 espnocs57 espnoac59 rusnocs64 cyrnocs65 elldict69 hundict70 hunnoac71 hunnocs73 turknoac74 turknocs129 cp932bin130 dynix137 gb2312bn140 cyrdict155 turdict161 euckscbn163 gbpinyin165 rusdict171 cp936179 sjisbin192 eucjisbn194 big5bin(43 rows affected)从列表中可以发现已经安装了cp936,id是171(5) 把系统的当前缺省字符集设置为cp936>sp_configure "default char",171>goIn changing the default sort order, you have also reconfigured SQL Server'sdefault 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 mustbe rebooted in order for the change to take effect.Changing the value of 'default character set id' to '171' increases the amountof memory ASE uses by 6 K.(return status = 0)然后在刚刚创建的数据库dbserver中建立表和初始数据,进行完这一步即可,无需重启服务。
程序中的汉字变乱码的解决方法
程序中的汉字变乱码的解决方法汉字出现乱码有好几种情况,大致可分成四类:网页、文本、文档和文件乱码。
第一类是由于港台的繁体中文大五码(BIG5)与大陆简体中文(GB2312)不通用造成的;第二类是系统(菜单、桌面、提示框)显示乱码,这是注册表中有关字体的部分设置不当引起的;第三类是各种应用程序(包括游戏)本来显示中文的地方出现乱码,形成原因比较复杂,有第二类的乱码原因,也可能是软件用到的中文动态链接库被英文动态链接库覆盖造成的;最后一类是邮件乱码。
(一)、网页、文本和文档文件乱码的消除网页乱码是浏览器(如IE等)对HTML网页解释时形成的。
如果在网页的代码中有形如:〈HTML〉〈HEAD〉〈META CONTENT=“text/html;charset=ISO-8859-1”〉〈/HEAD〉……〈/HTML〉的语句,浏览器在显示此页时,就会出现乱码。
因为浏览器会将此页语种辨认为“欧洲语系”。
解决的办法是将语种“ISO-8859-1”改为GB2312,如果是繁体网页则改为BIG5。
另一种解决办法是不修改网页代码,事先为浏览器安装多语言支持包(例如在安装IE时要安装多语言支持包),这样在浏览网页出现乱码时,就可以在浏览器中选择菜单栏下的“查看”/“编码”/“自动选择”/简体中文(GB2312),如为繁体中文则选择“查看”/“编码”/“自动选择”/繁体中文(BIG5),其它语言依此类推选择相应的语系,这样可消除网页乱码现象。
还有一种解决办法是利用多内码显示平台来转换内码。
常用多内码显示平台有:“南极星”、“四通利方”、“MagicWin 98等等。
网页无乱码保存的方法是:用浏览器打开网页时,在“查看”/“编码”中选择“自动选择”,存盘时保存类型选“web页”,编码选择“UNICOD”,这样保存过的网页再次打开时,在浏览器菜单“查看”、“编码”中不管选择简体中文(GB2312)、简体中文(HZ)还是UNICODE(UTF-8)或繁体中文(BIG5),最终显示都不会出现乱码。
解决sybase数据库中文乱码
存储过程和触发器)中文字符在软件内显示为乱排错等工作因数据库的字符集进行修改。
(中文字符,解决english”。
且在长达数年的实际使用中,并未有ERP系统的最终用户反应中文存在乱码的问题。
为进一步确定数据库中图1 Sybase Central查询结果中显示乱码Trouble Shooting在简体中文版本的Windows操作系统上,通过在命令行中输入命令“chcp”,即可得知系统的“中文(中国)”区域设置,对应的页码(字符集)为936(GBK)。
因此,在本案例中,笔者选用CP936作为Sybase开放客户格式提供言环境信information)”,(Open Client)图2 客户端的locales.dat文件原配置图3 修改后的配置图4 客户端的locales.dat文件原配置量对于运上的Sybase意义。
(在其他操作系统平台上亦可能存在图5 根据“$LANG”修改后的配置图6 Sybase Central v6.0中设置连接1>s p_c o n f i g u r e"e n a b l e u n i c o d econversions", 02> go完成上述配置后,再使用Sybase Central浏览数据库中的内容,即可发现中文字符已经可以正常显示了。
同时,在SQL Advantage(或Interactive SQL)、iSQL等工具中使用中文字符进行查询,亦可得到正确的查询图7 使用iSQL等工具连接数据库出现错误消息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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。