各位好!    编程实现保存.xls表格  用的vs2005。弹出对话框->输入文件名   保存 。
     输入英文或者数字时  正确。
     输入中文时 文件名变成乱码 后缀还是.xls。
 
     上网搜了些资料 ,在程序里加入
      _wsetlocale(LC_ALL,L"chs");     文件名终于变成中文了。但又出现了新的问题。     1、若输入“我和你”,生成的文件 文件名是“我和你”,没有后缀,图标是无法打开的那种样子,不过在列表中选择EXCEL还是能打开的。
     2、如输入“我和”,生成的文件名是“我和.x”  图标是记事本 但是打开是乱码
     3、如输入“我”,生成文件名士“我.xl” 图标有点像xls 但是又不是 双击可以正常打开
    我已经试了好多方法...还是没得到好的结果。希望大家帮帮忙!谢谢!

解决方案 »

  1.   

    编码问题吧!VS2005默认工程编码是Unicode编码,你可以在新建的工程的时候不要选择UNICODE编码!
    或者选用MultiByteToWideChar()和WideCharToMultiByte()进行编码转换!
      

  2.   

    http://www.cnblogs.com/clever101/archive/2009/10/31/1593707.html     以前看《Window核心编程》,感觉多字节和宽字节之间还比较麻烦的,至少MultiByteToWideChar函数和WideCharToMultiByte函数有足够多的参数的意义让我们去理解。近日接触了ATL的一个很好的字符串的转换宏:A2W和W2A。 用法很简单,A2W(ANSII转成WCHAR)的用法:    
               #include <atlconv.h>
           DoSomething(LPWSTR str);  //  函数声明       USES_CONVERSION;
           DoSomething(A2W("SomeString"));        W2A(WCHAR转成ANSII)的用法:
        #include <atlconv.h>
        DoSomething(LPCSTR str); //  函数声明     USES_CONVERSION;
        DoSomething(W2A(L"SomeString"));          另外使用这两个宏时最好把它们单独放入一个函数实现,具体原因见:谨慎使用A2W等字符转换宏
      

  3.   

    不是吧?这么神奇,输入若输入“我和你.xls”呢?
      

  4.   

    是不是放文件名的字符串定义的长度有问题,定义成MAX_PATH长度试下。
      

  5.   


    怎么定义啊?放文件名的是CString,没定义大小啊。