大家好:
我们公司实施了四班ERP,该产品数据库排序集为Latin1_General_BIN,且数据库中字符串类型都用的varchar,因此存入的数据在界面上虽能显示,但用SQL管理工具查询时显示的都是诸如????这类乱码。
我们在采用ADO.NET做ERP相关的二次开发时,读取数据都必须采用“Provider=SQLOLEDB.1;Auto Translate=False....”的链接方式,这样系统读出来的数据是正常的中文。
我对于这里的Auto Translate=False的原理不是很理解。。。。
此外,由于无法用SQL语句查出中文,因此,维护困难、无法通过SQL语句检索中文,还有如果从ERP数据库往另一个数据库导入数据时也无法用存储过程直接导,必须通过SQLOLEDB的程序中转一下才行。请问大家,有什么好的解决方案解决这类问题么?
SQLOLEDB? SQL Auto?Translate 编码集 ADO.NET
------解决方案--------------------------------------------------------
Auto Translate=False
禁止服务器端自动代码页转换,原原本本传binary stream过来,然后用客户端的代码页解释字符。
搜索中文可以用binary搜索,客户端将中文条件转换成binary:
select * from tb where colname=0xabcd
导数据就只能这样没别的办法了,指定中文排序规则同样涉及代码页自动转换问题。
------解决方案--------------------------------------------------------
Auto Translate一楼解释够清楚的了
对于维护问题,建议是最好进行数据库重建,即
1、建立一个中文排序规则的数据库
2、表中字符字段修改为nvarchar(...)类型
3、从原库倒入数据,这里需要试各种方法,要求不乱码,肯呢光的方法包括:直接导、导出到txt文件再导入、bcp导出后bcp导入、导出到access再导入等等
4、修改程序的连接方法和查询方法,直接使用中文查询。
------解决方案--------------------------------------------------------
帮忙顶顶,新年快乐