我们知道IE中有这个菜单“查看->编码”。在这里可以对IE中显示的内容进行自定义的编码转换。你在日文版本的操作系统中复制出一些日文字符,在简体中文操作系统中粘贴后,看到的内容和你在日文中看到的是不一样的。而如果你在ie中进行编码的转换,以日文编码来查看的话,就会看到原始的内容。
请问:使用什么函数可以做到这样编码的转换?我要的不是工具,而是代码或者函数。

解决方案 »

  1.   

    MultiBytesToWideChar 选择字符集等
      

  2.   

    只有ansi/utf8/utf16/utf32之间才需要进行编码转换(唯一的转换函数就是WideCharToMultiByte/MultiByteToWideChar),在unicode编码下不同语言之间是无需转换的,因为每种语言在Unicode编码中占用的区域是不同的,不会存在冲突情况,只要安装了该语言的字体,所有语言都可以混合显示。唯一要区分编码的是ANSI编码,在不同语言下面可能会显示乱码,但这不是编码转换的问题,而是哪种语言才能正确显示的问题。
      

  3.   

    我是这样写的:
    ReadFile(hFile, szBuffer, sizeof(szBuffer), &dwRead, NULL);
    szBuffer[dwRead]=0;
    szBuffer[dwRead+1]=0;
    MultiBytesToWideChar(CTRY_JAPAN, 0, szBuffer, 0, wsBuffer, 0);  //这一行
    printf("%ws", wsBuffer);但什么东西都打印不出来。
    文件中存放的是从日文操作系统中复制出来的日文。
      

  4.   

    找个编辑工具(比如NotePad++)打开文件,看看它的编码是哪种类型。你不能武断地认为这个文件是ANSI编码。
      

  5.   

    你 直接用unicode的字符串等存放文件中的日文,CString,WCHAR等
      

  6.   

    内容是这样的“\x90\x56\x82\xB5\x82\xA2\x83\x74\x83\x48\x83\x8B\x83\x5F”
    就是日文的“新建文件夹”。
      

  7.   

    现在的问题是我以前的编码都没有考虑Unicode的问题,现在遇到了简体中文操作系统要浏览日文(或者其他非中文系统)中的目录。显示的都是乱码,我想最节约地解决这个问题。
      

  8.   

    如果要实现两种非Unicode编码相互转换,可以先用MultiByteToWideChar转成Unicode,再用WideCharToMultiByte转成编码。
    如果只是要显示,转成Unicode编码来处理即可。
      

  9.   

    听了高手的介绍,思路我知道了。
    但函数的具体参数上,我还是不明白该如何做,这里我给出一些字符串,希望高手能够给出函数调用流程和参数。在日文操作系统中,一个“新建文件夹”是这样显示的“新しいフォルダ”,
    但是这个字符串发送到简体中文中后,printf后显示是这样的“怴偟偄僼僅儖僟”。
    我把“怴偟偄僼僅儖僟”拷贝并放置到一个文件中,在ie中打开后,以“日文”来查看,就会正常显示成“新しいフォルダ”。字符集比较复杂,我看我没有几天是搞不懂了。对我而言,只要实现"怴偟偄僼僅儖僟"->"新しいフォルダ"就可以了。
      

  10.   

    MultiBytesToWideChar(CP_ACP, 0, szBuffer, 0, wsBuffer, 0); 
      

  11.   


    char * szBuffer = "怴偟偄僼僅儖僟";
    MultiBytesToWideChar(CP_ACP, 0, szBuffer, 0, wsBuffer, 0);  //这一行代码返回0,表示失败,恐怕这样不行
      

  12.   

    cnzdgs的思路是对的,但没有给出代码。我测试后下面的代码是可以的。
    MultiByteToWideChar(932, 0, szBuffer, -1, wsBuffer, sizeof(wsBuffer)/2); //932表示ANSI/OEM - janpanese,即将原来//的字符转换为Uncode字符。
    //然后转换为简体中文下的字符
    WideCharToMultiByte(936, 0, wsBuffer, -1, szBuffer2, 200, NULL, NULL); 不能给自己加分。只好把分分了。