JDBC_读写生僻汉字_SYBASE
时间:2011-08-17
来源:互联网
最近做一个项目,需要使用SYBASE数据库。
基本功能就是从SYBASE中读取信息在页面显示。
页面字符集是UTF-8
SYBASE默认字符集是 ENCGB
本来功能是正常的。
最近发现一个问题,在数据库中保存一些生僻字后,如果直接用isql在SYBASE数据库里写是可以正常保存的。
例如:喆,在数据库里保存是正常的。
但是通过JDBC连接数据库,读出来的却是“?”
连接数据库的URL是这样写的。
jdbc:sybase:Tds:localhost:5007/myDB?charset=cp936
普通汉字都可以正常的进行读写,只有那些生僻字无法显示。
SYBASE数据库中也添加了cp936字符集。
但是还是无法正常读写生僻汉字。
数据库的默认字符集不允许 改为“CP936”,所以只能在连接字符串上添加字符集CP936
大家有没有遇到过这种问题。
通过JDBC连接SYBASE获取的结果是什么字符集的呢?可以在读写的时候对字符串的编码进行转换吗?
基本功能就是从SYBASE中读取信息在页面显示。
页面字符集是UTF-8
SYBASE默认字符集是 ENCGB
本来功能是正常的。
最近发现一个问题,在数据库中保存一些生僻字后,如果直接用isql在SYBASE数据库里写是可以正常保存的。
例如:喆,在数据库里保存是正常的。
但是通过JDBC连接数据库,读出来的却是“?”
连接数据库的URL是这样写的。
jdbc:sybase:Tds:localhost:5007/myDB?charset=cp936
普通汉字都可以正常的进行读写,只有那些生僻字无法显示。
SYBASE数据库中也添加了cp936字符集。
但是还是无法正常读写生僻汉字。
数据库的默认字符集不允许 改为“CP936”,所以只能在连接字符串上添加字符集CP936
大家有没有遇到过这种问题。
通过JDBC连接SYBASE获取的结果是什么字符集的呢?可以在读写的时候对字符串的编码进行转换吗?
作者: so_fast 发布时间: 2011-08-17
GBK应该没问题的
作者: cbxjj 发布时间: 2011-08-17
资料:
EUCGB字符集是基于GB2312-80编码规范的,它的EUC (Extended Unix Code)编码范围是第一字节0xA1~0xFE(实际只用到0xF7),第二字节0xA1~0xFE。 CP936字符集是基于GBK编码规范(实际上的国家标准是GB13000-90),是对GB2312进行的扩展。
一般来说,由于EUCGB不支持国标一、二级字库以外的汉字,所以推荐在服务器端和客户端都使用CP936字符集。
根据这个理解,cp936>EUCGB。因为没搞过sysbase,所以给楼主的建议是:
1 jdbc:sybase:Tds:localhost:5007/myDB?charset=cp936的确起作用了吗?
2,“例如:喆,在数据库里保存是正常的。”这说法是有根据什么得出的,EUCGB能存那个生僻字么?
EUCGB字符集是基于GB2312-80编码规范的,它的EUC (Extended Unix Code)编码范围是第一字节0xA1~0xFE(实际只用到0xF7),第二字节0xA1~0xFE。 CP936字符集是基于GBK编码规范(实际上的国家标准是GB13000-90),是对GB2312进行的扩展。
一般来说,由于EUCGB不支持国标一、二级字库以外的汉字,所以推荐在服务器端和客户端都使用CP936字符集。
根据这个理解,cp936>EUCGB。因为没搞过sysbase,所以给楼主的建议是:
1 jdbc:sybase:Tds:localhost:5007/myDB?charset=cp936的确起作用了吗?
2,“例如:喆,在数据库里保存是正常的。”这说法是有根据什么得出的,EUCGB能存那个生僻字么?
作者: jingluo 发布时间: 2011-08-17
引用 1 楼 cbxjj 的回复:
GBK应该没问题的
GBK应该没问题的
我用ISQL在数据库里插入“喆”可以正常保存。
但是通过JDBC查询出来就是成问号了。
例如“中喆国”保存在数据库里是对的。
查询出来是“中?国”
就是生僻字无法显示。
其他字都正常。
有人说是字符集统一。但我现在在JDBC连接串上加了CP936,还是不行。。。
作者: so_fast 发布时间: 2011-08-17
引用 2 楼 jingluo 的回复:
资料:
EUCGB字符集是基于GB2312-80编码规范的,它的EUC (Extended Unix Code)编码范围是第一字节0xA1~0xFE(实际只用到0xF7),第二字节0xA1~0xFE。 CP936字符集是基于GBK编码规范(实际上的国家标准是GB13000-90),是对GB2312进行的扩展。
一般来说,由于EUCGB不支持国标一、二级字库以外的汉字,所以推荐在服务器端和客户端……
资料:
EUCGB字符集是基于GB2312-80编码规范的,它的EUC (Extended Unix Code)编码范围是第一字节0xA1~0xFE(实际只用到0xF7),第二字节0xA1~0xFE。 CP936字符集是基于GBK编码规范(实际上的国家标准是GB13000-90),是对GB2312进行的扩展。
一般来说,由于EUCGB不支持国标一、二级字库以外的汉字,所以推荐在服务器端和客户端……
第一个问题:
我在两台数据库服务器上进行了测试,一台可以成功,一台不行,感觉一点作用都没起。
第二个问题:
是我直接在数据库中进行的操作,确实可以正常保存这些生僻字。
两台数据库服务器的默认字符集都是
charset=170 encgb gb2312-80
作者: so_fast 发布时间: 2011-08-17
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28