str.Format(_T("%s"),m_row[j]);
这是什么?整形还是字符串?

解决方案 »

  1.   

    估计数据库查询到的是ANSI编码的字符串,而工程是Unicode的
    转换一下吧 参考 MultiByteToWideChar
      

  2.   


    这个原本是要把表中的内容写入一个listControl控件中,m_row得到的是字符串数组,如果要得到整形,要用auti(),.
    原本我以为是编码问题中文乱码,但是试着查询一个整形字段,得到的都是乱码,这估计就不是编码的问题了。
      

  3.   

    终于找到原因了。
    原来MYSQL_ROW 对象是char ** 类型,一个地址指针,即字符串数组的首地址,而地址是个Long类型。
    如果用str.Format(_T("%s"),m_row[j]);,这是把这个m_row[j]字符串的地址换成字符串。想想,把一个Long类型的地址换成字符串(我猜就是把这个Long类型按照gb2312编码换成汉字),肯定是乱码。
    所以,直接把这句换成 str=m_row[j];,直接把字符串地址所指向的字符串赋值给CString变量,就不再是乱码了。