我用MFC ODBC开发的一个操纵数据库的程序,改为支持unicode后,再写入数据到数据库,对于汉语和日语总是只能写进当前数据的正好一半的数据,对于英语则可以完全写入,为什么?请高手指点

解决方案 »

  1.   

    因为unicode的长度是asc的一倍
      

  2.   

    这个我知道,也改过了一些函数,但我和控件绑定的变量都是CString类型的,写入数据库时没有取长度,为什么它给我截断了?
      

  3.   

    似乎是因为ODBC不支持UNICODE
    ms-help://MS.MSDNQTR.2003FEB.2052/vccore/html/_core_Support_for_Unicode.htm
    除数据库类外,MFC 框架完全支持 Unicode。(ODBC 不支持 Unicode。)MFC 通过始终使用“可移植的”宏来实现对 Unicode 的支持,如下表所示:
      

  4.   

    应该是将数据库改为unicode选项吧,你用查询分析器看看是sql把你的字符强行切断还是怎么会事情.
      

  5.   

    跟踪了一下代码发现在插入数据的时候,UNICODE字符串好像被强制转换成字符指针型的,但是求的长度还是按UNICODE的来算,如此加入数据导致刚好只有一半,听说2003中的CString被重写过,然后把工程升级到2003就没有这种问题了。