捣腾好几天啦
提问之前我已经看过原先的文章,可是都不能很好的解决我的问题
ANSII,UNICODE,UTF-8关于这三种类型的转换,最好给个实例?
我用widechartomultibyte(),he和multibytetowidechar()函数
时,我已有的数据类型是CString(UNICODE),而这两个函数
要求是LPCSTR,和LPCWSTR格式,还有我最终要求是
把UNICODE CString转换UTF-8格式的LPCTSTR 数据如何转换?
实在搞不懂那么多参数的意思
麻烦给个例子说明一下。
麻烦那位大侠讲解一下char*,LPSTR,LPCTSTR,LPCWSTR,CString,
string之间的类型转换,最好给出例子说明。
本人比较笨,麻烦大家了
非常感谢分不够我可以在加

解决方案 »

  1.   

    _T()只能在你定义为按UNICODE编码时,才会有用。如果你的编码
    格式为_MBCS格式的话_T(),是没有意义的!
      

  2.   

    UTF-8是UNICODE的压缩格式,你可以找找网上有相应的说明,使用widechartomultibyte()和multibytetowidechar是可以转换的char*,LPSTR,LPCTSTR,LPCWSTR,CString,string的问题,关键要理解类型的含义
    LPSTR = char *
    中间+T代表TCHAR, + W代表WCHAR + C代表const
    CString可以通过赋值,初始化等方法转换
    string可以通过string.c_str()转换成LPTSTR,然后转换
      

  3.   

    multibytetowidechar/widechartomultibyte()
    只能够进行MBCS和UTF8或者Unicode之间转换。好像不可以把Unicode转成UTF8的。
    这个要自己写函数。
      

  4.   

    关于类型转换
    typedef LPCSTR LPCTSTR;
    typedef LPCWSTR LPCTSTR;
    LPSTR
    LPCSTR 指向一个以"NULL"结束的WINDOWS字符串常量的指针
    LPCTSTR 指向一个以"NULL"结束的Unicode或Windows字符串常量的指针 
    LPCWSTR 指向一个以"NULL"结束的Unicode字符串常量的指针
    TCHAR Unicode或Windows字符
    WCHAR Unicode字符
    通过查看WINNT.H文件,可以知道如果你设定的编码格式为UNICODE,那么
    这些变量都是UNICODE类型,设置 为MBCS格式的,这些结构全是不定长的
    字符串,关于转换
    char *p,pp[256];//ANSII
    WCHAR wp;// UNICODE
    CString str("你好");
    string strTemp("nih熬");
    p = (LPSTR)(LPCTSTR)str;//CString-->char*,过程是typedef CONST CHAR *LPCTSTR
    //先对str转换为const char*格式(LPCTSTR),然后LPSTR转换为char*格式,转换后
    // 的p是不可修改的
    p = strTemp.c_str();// srting ->char *使用string的内置转换函数
    strcpy(pp,(LPSTR)(LPCTSTR)strCString); //CString---->char[],可以对pp进行修改
    wp = pp;//这时就可以把pp转换为UNICODE编码格式
      

  5.   

    《Windows图形编程》这本书里面对字符集和编码以及字体都讲的比较清楚,可以参考一下。
      

  6.   

    TO:snaill(com.chinaos.snaill)找过一些函数但是不能使用,
    也许是我太懒,所以麻烦做过的人给个代码看看
    TO:yhz(耗子)自己写了不太好使,所以麻烦做过的人给函数看看
      

  7.   

    《Windows图形编程》这本没有找到中文的。
      

  8.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=191432http://community.csdn.net/Expert/topic/3320/3320756.xml?temp=.5556909
      

  9.   

    以上两片文章看过,也受益匪浅。
    但是感觉并没有把问题讲深(至少没有我要求的那个深度)
    并且,一旦你用UNICODE编码,将会有许多函数无法使用
    比如fstream file; 
    file.open();//写文件流的操作他只支持char *计ansi码格式
    相这种问题如何避免,或者用其他方法替代,都没有说。现在只是遇到这个问题,正在学习中。。
    谢谢各位,问题搞定后,会把自己的问题写出来,
    以便大家共同学习
      

  10.   

    http://community.csdn.net/Expert/topic/3320/3320756.xml?temp=.1926081
      

  11.   

    http://community.csdn.net/Expert/topic/3320/3320756.xml?temp=.1926081
    这位老兄得发表得大部分看法都是从<Windows核心编程>,第二章关于UNICODE
    中抄写得!
    算了.问题依然存在!
    如果有人想讨论关于UNICODE编码得问题可以找我联系
    [email protected]
    结帖