`
liyuan66
  • 浏览: 14007 次
社区版块
存档分类
最新评论

MFC字符Unicode转UTF-8

    博客分类:
  • c++
 
阅读更多
unicode的环境下,写中文到文件,会出现乱码。

解决方法下面两个函数。

EncodeToUTF8  写入的时候调用

UTF8ToEncode 读取的时候调用


MultiByteToWideChar                           WideCharToMultiByte 实现原理就是这两个函数。 不知到哪位仁兄写的。

 

char* EncodeToUTF8(const char* mbcsStr)
{
 wchar_t*  wideStr;
 char*   utf8Str;
 int   charLen;

 charLen = MultiByteToWideChar(CP_UTF8, 0, mbcsStr, -1, NULL, 0);
 wideStr = (wchar_t*) malloc(sizeof(wchar_t)*charLen);
 MultiByteToWideChar(CP_ACP, 0, mbcsStr, -1, wideStr, charLen);

 charLen = WideCharToMultiByte(CP_UTF8, 0, wideStr, -1, NULL, 0, NULL, NULL);

 utf8Str = (char*) malloc(charLen);

 WideCharToMultiByte(CP_UTF8, 0, wideStr, -1, utf8Str, charLen, NULL, NULL);

 free(wideStr);
 return utf8Str;

}
char* UTF8ToEncode(const char* mbcsStr)
{
 wchar_t*  wideStr;
 char*   unicodeStr;
 int   charLen;

 charLen = MultiByteToWideChar(CP_UTF8, 0, mbcsStr, -1, NULL, 0);  
 wideStr = (wchar_t*) malloc(sizeof(wchar_t)*charLen);
 MultiByteToWideChar(CP_UTF8, 0, mbcsStr, -1, wideStr, charLen); 

 charLen =WideCharToMultiByte(CP_ACP, 0, wideStr, -1, NULL, 0, NULL, NULL); 
 unicodeStr = (char*)malloc(charLen);
    WideCharToMultiByte(CP_ACP, 0, wideStr, -1, unicodeStr, charLen, NULL, NULL); 

 free(wideStr);
 return unicodeStr;
}
分享到:
评论

相关推荐

    c++ UTF-8 UTF-16转换

    UTF-8是一种变长的字符编码,它使用1到4个字节来表示一个Unicode字符,其中ASCII字符(0-127)只需要1个字节。UTF-16则通常使用2个字节,对于大部分的Unicode字符,但对超出基本多文种平面(BMP)的字符,如表情符号...

    MFC UTF-8文件批量转成GB2312 解决中文乱码问题

    在本场景中,我们面对的问题是“MFC UTF-8文件批量转成GB2312 解决中文乱码问题”,这涉及到文件的读取、编码转换以及文件的写入操作。 首先,我们需要理解UTF-8和GB2312这两种编码的区别。UTF-8是一种变长的...

    Unicode与utf8转码代码[纯代码不依赖其他库]

    本篇文章将详细探讨 Unicode 和 UTF-8 编码之间的转换,并提供一个不依赖于任何第三方库(如 iconv、MFC 或 ATL)的纯 C++ 代码实现。 首先,我们来理解一下 Unicode 和 UTF-8 的基本概念。Unicode 是一种统一的...

    CString转UTF8,UTF8转CString

    #### 三、UTF-8转CString 接下来,我们看看如何将UTF-8编码的字符串转换为`CString`: ```cpp CString CNurseDialog::utf8ToMulti(CString &str_utf8) { CString str_multi; int len = MultiByteToWideChar(CP_...

    GBK与UTF-8转码(C++)

    - **UTF-8**:即“Unicode Transformation Format - 8 bits”,是一种可变长度的字符编码方式,用于表示Unicode字符集。UTF-8编码最大的优点在于兼容ASCII,并且对于英文等拉丁语系的文字占用较少空间,因此被广泛...

    简单的UTF-8与GBK之间相互转码工具

    而UTF-8是一种可变长度的Unicode编码,能容纳世界上几乎所有的字符集。 GBK编码是中国大陆广泛使用的编码标准,它基于GB2312,增加了许多额外的字符。UTF-8则是一种国际化的编码标准,它是Unicode的一种实现方式,...

    C语言UTF8到ANSI和Unicode转换代码

    本文将深入探讨C语言中UTF8、ANSI和Unicode字符集之间的转换方法,以及如何在MFC(Microsoft Foundation Classes)项目中集成这些转换代码。 首先,我们要了解UTF8、ANSI和Unicode的概念。UTF8是一种变长的Unicode...

    MFC读取utf8示例

    UTF-8是一种广泛使用的Unicode编码,能够表示Unicode字符集中的所有字符。在Windows系统中,标准的文本文件读取操作可能会默认采用ANSI编码,这可能导致在处理非ASCII字符时出现问题。因此,我们需要明确指定使用UTF...

    转换成UTF8格式 VC++

    UTF-8是一种广泛使用的Unicode字符编码,它可以表示所有Unicode字符集中的字符。在VC++环境中,使用MFC(Microsoft Foundation Classes)库进行开发时,我们有时需要将字符串转换为UTF-8格式,以便在不同系统和平台...

    Vc下unicode和UTF8相互转换源代码

    1. **UTF-8转Unicode**:在给定的代码段中,提供了一个`UTF8ToUnicode`函数,用于将UTF-8编码的字符串转换为Unicode编码的`CString`对象。这个函数首先通过`MultiByteToWideChar`函数获取转换后的Unicode字符串所需...

    gbk和utf8转换程序

    UTF-8(Unicode Transformation Format - 8 bit)是一种变长的Unicode编码方式,它可以表示Unicode字符集中所有的字符。UTF-8的特点是对于ASCII字符,它与ASCII编码完全一致,而对于非ASCII字符,如汉字,它使用2到4...

    支持UNICODE读写的MFC扩展类 CStdioFileEx

    这意味着当读取文件时,`CStdioFileEx`能够自动检测文件的字符集,无论是ASCII、UTF-8还是其他UNICODE编码,都能正确处理。这对于处理全球化软件和跨平台项目尤其重要,因为它确保了数据的一致性和准确性。 在`...

    win32下UTF-8转GB2312代码

    ### Win32环境下UTF-8转GB2312的方法 #### 方法一:使用MFC类库 在Windows环境下,Microsoft Foundation Classes (MFC) 提供了一套强大的API来处理字符串编码转换。以下代码示例展示了如何使用MFC的`...

    GB/BIG5/UTF-8 文件编码批量转换程序

    3. **UTF-8编码**:是一种变长的Unicode编码,可以表示Unicode标准中的所有字符。UTF-8的最大优点是与ASCII兼容,且在网络传输中占据空间较小,因此被广泛应用于互联网。 4. **批量转换**:此程序的功能亮点在于...

    Q701696 MFC在UNICODE环境下,如何读取UNICODE编码形式的TXT文件?

    UNICODE是一种广泛使用的字符编码标准,它支持世界上几乎所有的字符集,包括ASCII、GB2312、GBK以及UTF-8等。在UNICODE环境下读取TXT文件,主要是为了正确解析和处理这些多语言或特殊字符。 MFC提供了一些基本的...

    Utf8ToCString

    1. **UTF-8转中文(ANSI/MBCS)**: 这通常涉及到`MultiByteToWideChar`和`WideCharToMultiByte`这两个Windows API函数。`MultiByteToWideChar`将多字节字符串(如UTF-8)转换为宽字符字符串(UTF-16,Windows内部...

    EncodeDecode & ANSI-UTF8编码转换工具

    UTF-8 的优点在于它可以表示Unicode中的任何字符,且对于ASCII字符,UTF-8编码与ASCII相同,这使得它与许多现有的ASCII兼容系统兼容良好。此外,UTF-8的字节顺序是固定的,这使得在网络传输和存储时更为方便。 ...

    Unicode MBCS字符转换程序.rar

    本项目"Unicode MBCS字符转换程序.rar"专注于解决字符编码的转换问题,包括Unicode16le、Unicode16be、utf-8以及MBCS(多字节字符集)之间的相互转换。下面我们将深入探讨这些编码方式及其转换的原理与实践。 首先...

    unicode-CFile.rar_CFILE utf8_CFile Unicode_CFile unicode TXT_un

    总结来说,"unicode-CFile.rar_CFILE utf8_CFile Unicode_CFile unicode TXT_un"这一主题涵盖了使用CFile类处理UTF-8编码的Unicode配置文件的关键点。理解和掌握这些知识对于进行跨平台、多语言的软件开发至关重要,...

    love string 超好用的字符编码查询工具

     文本字符串编码在 Text、ANSI、Unicode、Unicode Big Endian、UTF-8、 UTF-7 之间的互相转换,转换结果使用十六进制表示。 ******* STR *****************  * 运行环境 *  本软件在 Windows 98、Windows 2000...

Global site tag (gtag.js) - Google Analytics