使用ODBC向SQL Server6.5写汉字,得到的却是乱码
编号:QA002649
建立日期: 2000年2月28日 最后修改日期:2000年3月6日
所属类别:
王炬:
操作系统:Windows
编程工具:VC++
问题:我在VC++6.0中使用CRecordSet类通过ODBC向SQL Server6.5写汉字,但在数据库中得到的却是乱码,请专家指教,急!急!急!
回答:
刘映虹的意见:
我只知道ODBC使用MBCS字符集,就是说西文字符占一字节,汉字占两字节,从你说的情况看,也许SQL Server使用Unicode字符集,不管西文汉字都占两字节,ODBC负责把MBCS转换成Unicode,转换时要设置语言代码页codepage为简体中文,ODBC可能有这方面的API,这是一种情况;还有可能,SQL Server支持MBCS,但codepage未设对,我觉得这种可能性较大,找找SQL Server这方面的设置。Win32 API这方面的函数有SetLocaleInfo,MultiByteToWideChar。
ZQL的意见:
这个问题我也碰到过,本人发现,当ODBC的驱动程序为99年的就会出现这怪状,若把ODBC的驱动程序改成98年的则可以了。另外,如果是用ODBC 99年的驱动程序,您可在建立的数据源时,把类似“执行字符转换集”这个选项关闭,哈,您会发现,转过来的字符不乱码了。个中原因,不是很清楚,希望哪位网友能解释一下。谢谢。(我在用VFP6.0的视图连接SQL6.5,WIN98简体中文平台时出现这种现象,ODBC 的版本本来不这样称呼,但在控制面板中看年份来识别ODBC版本好象简便点。)
小海龙的意见:
此问题本人也遇到过,后来经多方了解,得到了解决的办法,ODBC在99年的版本会出现乱码问题,只需把 c:\Program Files\common File\system\ole db\sqloledb.dll 这个文件改为98版本的既可.(即把版本为07.01.0623的改为07.00.0502,此文件可从早期装有ODBC的机器中找到,然后拷贝过来再复盖掉现有的sqloledb.dll就行了)
相关问题:
QA002096 "从SQLServer数据库取来的数据中汉字信息全部是乱码"
此问题由刘映虹等回答。
| |
|
|
| |
|
|