热情软件屋

 

使用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数据库取来的数据中汉字信息全部是乱码"

此问题由刘映虹等回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio