解决方案 »

  1.   

    一般来说,unicode文本文件开头都有两个字节,小端是0xFF0xFE,大端是0xFE0xFF,我没查过这有没有专门的规定,只知道一般是这样
    如果不是unicode文本文件,如果只有文本数据没有其他任何信息,那只能通过概率统计来分析文本内容从而得到这段数据是哪种编码方式的文本。文本越长概率越精确分析越智能则成功率越高,但没有百分百成功的方法。
      

  2.   

    vc6.0,工程里设置Unicode,_Unicode,我打开一个包含英文,日文,韩文的txt文档显示在edit文本框里,出现部分乱码,这是什么原因?
      

  3.   

    判断计算机的存储形式:
    #define ISLE (unsigned char(0x00FF << 8) ? FALSE : TRUE)
    转换字节:
    #define REVERSE(x) ((((x) & 0x00FF) << 8 | (((x) & 0xFF00) >> 8))
    是什么,在什么时候用,求详细解释
      

  4.   

    CFileDialog fileDlg(true);
    if (IDOK==fileDlg.DoModal())
    {
    CFile file;
    if(!file.Open(_T(fileDlg.GetFileName()),CFile::modeRead|CFile::typeBinary)) {
    return;
    }
    DWORD len=file.GetLength();
    BYTE idtf[2]={0};//保存文本的前两个字节
    file.Read(idtf,2);if((idtf[0]==0xff&&idtf[1]==0xfe)||(idtf[0]==0xfe&&idtf[1]==0xff))
    {
    //AfxMessageBox(_T("Unicode"));
    WCHAR *wstr=new WCHAR[len+1];

    memset(wstr,0,(len+1)*sizeof(WCHAR));
    file.Seek(2,CFile::begin);
    file.Read(wstr,len);
    wstr[len]=_T('\0');
    file.Close();
    CString content(wstr);
    GetDlgItem(IDC_EDIT1)->SetWindowText(content);
      

  5.   

    项目设置的UNICODE,决定了调用WindowsAPI和MFC类库时使用哪个版本,也就是那些有A和W后缀两个版本的函数
    这就是个简单的宏定义,如果定义了这个宏,就把所有这类函数替换为W版本,否则替换为A版本
    如果你在程序里需要处理文本,仍然需要自己处理编码问题,项目设置的UNICODE对此没有任何影响其他的,我不给人解释代码,自己想或者等别人解释吧
      

  6.   

    vc6默认的是ansi环境,怎么设置成Unicode环境,再者显示不同编码格式的txt文本,需要注意那些细节?项目设置的UNICODE,决定了调用WindowsAPI和MFC类库时使用哪个版本,也就是那些有A和W后缀两个版本的函数
    这就是个简单的宏定义,如果定义了这个宏,就把所有这类函数替换为W版本,否则替换为A版本
    如果你在程序里需要处理文本,仍然需要自己处理编码问题,项目设置的UNICODE对此没有任何影响其他的,我不给人解释代码,自己想或者等别人解释吧
      

  7.   

    vc6默认ansi环境,怎么设置成Unicode环境。再者显示不同编码格式的txt文档,需要注意那些细节,这和ansi环境,Unicode环境有什么关系
      

  8.   

    比如我显示大端和显示小端的Unicode文档有什么区别
    刚学习这东西,搞的头都大了
    急求,求高人指教
      

  9.   

    VC6的项目设置中可以改,选项在哪里自己百度
    至于UNICODE环境不知道你说的是什么意思,反正我的VC6打不开UNICODE编码的源代码文件微软的A版本的函数和类,以及标准C++的基本输入输出可以显示ANSI编码的文本,而对应的带w的版本可以显示UNICODE编码的文本
    大小端是用于网络传输等跨平台时要注意的,如果你的机器是小端,那么大端机器直接传给你的文本,或者按照某个大端协议传给你的文本,就需要转换成小端后使用
    没啥需要注意的,遇到一个问题自己百度(谷歌被封了),想明白里面的前因后果就可以了
    如果想要一个“完整答案列表”,抱歉,这种东西只在学校里存在,工作中从来没有标准答案,只有去找答案的能力
      

  10.   

    ansi编码方式的txt文档里含有英文,日文,韩文,韩文是乱码,其它编码方式韩文不是乱码;
    而且vc6默认字符集下,我把Unicode(le)转换成多字节,显示在edit上,只有韩文是乱码,
    能给解释吗
      

  11.   

    乱码有时是因为没有安装对应字体,有时是因为没有指定相应的字符集。
    推荐使用字体MS Mincho
      

  12.   

    #pragma comment(lib,"user32")
    #pragma comment(lib,"gdi32")
    #include <conio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    HWND WINAPI GetConsoleWindow();
    void HideTheCursor() {
        CONSOLE_CURSOR_INFO cciCursor;
        HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);    if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {
            cciCursor.bVisible = FALSE;
            SetConsoleCursorInfo(hStdOut, &cciCursor);
        }
    }
    void ShowTheCursor() {
        CONSOLE_CURSOR_INFO cciCursor;
        HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);    if(GetConsoleCursorInfo(hStdOut, &cciCursor)) {
            cciCursor.bVisible = TRUE;
            SetConsoleCursorInfo(hStdOut, &cciCursor);
        }
    }
    int main() {
        HWND  hwnd;
        HDC   hdc;
        HFONT hfont;    system("color F0");
        system("cls");
        HideTheCursor();
        hwnd  = GetConsoleWindow();
        hdc   = GetDC(hwnd);
        hfont = CreateFont(48, 0, 0, 0, 0, 0, 0, 0, 0             , 0, 0, 0, 0, "Arial Unicode MS");
        SelectObject(hdc,hfont);
        TextOutW(hdc,10,10,L"你好",2);
        DeleteObject(hfont);
        hfont = CreateFont(48, 0, 0, 0, 0, 0, 0, 0, JOHAB_CHARSET , 0, 0, 0, 0, "Arial Unicode MS");
        SelectObject(hdc,hfont);
        TextOutW(hdc,10,80,L"\xb7f0\xb7f0\xb2dd\xb2dd",4);
        DeleteObject(hfont);
        ReleaseDC(hwnd,hdc);
        getch();
        system("color 07");
        system("cls");
        ShowTheCursor();
        return 0;
    }