zoukankan      html  css  js  c++  java
  • win32

    #include <Windows.h>
    #include <stdio.h>
    #include <io.h>
    #include <fcntl.h>
    #pragma warning(disable:4996)
    
    bool ConvertToWideFromUTF8orACP(char* strData, wchar_t* w_strData, int w_strDataLen)
    {
        int nSize = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, strData, -1, w_strData, w_strDataLen);
        if (nSize == 0)
        {
            nSize = MultiByteToWideChar(CP_ACP, MB_ERR_INVALID_CHARS, strData, -1, w_strData, w_strDataLen);
        }    
        return nSize - 1;
      
    }
    
    int main()
    {
        char cs[] = "Hello大家好";
        printf("%s
    ", cs);
        wchar_t* lpWideCharStr = new wchar_t[sizeof(cs)];
        memset(lpWideCharStr, 0, sizeof(cs));
        int nSize = ConvertToWideFromUTF8orACP(cs, lpWideCharStr,sizeof(cs));
        _setmode(_fileno(stdout), _O_U16TEXT);
        if (nSize > 0)
        {
            wprintf(L"%s", lpWideCharStr);
        }   
        FILE* pf;
        pf = _wfopen(_FileName, L"a, ccs=UTF-8");
        fwprintf(pf, L"%ls", lpWideCharStr);
        delete[] lpWideCharStr;
        fflush(pf);
        fclose(pf);
    }

     中文字符需要占到两个字节,所以一般以宽字节来处理。如果用多字节来存放宽字节的中文字符,那我们就需要使用MultiByteToWideChar来转换。

  • 相关阅读:
    汤圆只有汤没有圆了,过了过了
    CommonJS
    What is Socket.IO?
    白话PGP/GPG
    汤圆只有汤没有圆了,过了过了
    npm for nodejs
    Running Daemontools under Ubuntu 8.10
    ubuntu seahouse
    node.js入门
    my blog zen :分享所学,backup一切~
  • 原文地址:https://www.cnblogs.com/strive-sun/p/14451111.html
Copyright © 2011-2022 走看看