`

Utf8 char to Unicode/LocalCode TCHAR

 
阅读更多
/************************************************************************/
/* convert Utf8 char to Unicode/LocalCode TCHAR                         */
/************************************************************************/
TCHAR* ConvertUtf8ToTChar( char* src)
{
	int size = strlen(src)+1;
	WCHAR* dest = new WCHAR[size];
	memset( dest, 0, sizeof(WCHAR)*size );
	MultiByteToWideChar(CP_UTF8, 0, src, -1, dest, (int)size);
#ifdef UNICODE
	return dest;
#else
	//convert unicode to local code.
	int size_local = wcslen(dest) + 1;
	char* dest2 = new char[size_local];
	WideCharToMultiByte(CP_ACP, 0, dest, -1, dest2, size, NULL, NULL);
	delete[] dest;
	return dest2;
#endif
}

 

分享到:
评论

相关推荐

    Char_Cstring_TCHAR.rar_C++ CString CHAR_Char_Cstring_TCHAR_TCHAR

    在编译时,如果定义了`UNICODE`或`_UNICODE`宏,`TCHAR`将被映射为`WCHAR`,否则它被映射为`CHAR`。`WCHAR`是用于表示宽字符(如UTF-16)的数据类型。使用`TCHAR`可以编写同时支持多语言环境的代码,无需进行大量...

    (UNICODE 与非UNICODE导致的问题)CString,TCHAR和CHAR类型的互转.docx

    在C++编程中,特别是在MFC(Microsoft Foundation Classes)库中,`CString`、`TCHAR`和`CHAR`类型扮演着关键的角色,它们之间的转换是解决UNICODE和非UNICODE兼容问题的关键。 `CString`是MFC库提供的一种字符串类...

    QString转换为TCHAR*

    当需要将QString转换为非Unicode(ASCII)字符串时,可以使用`toLocal8Bit()`函数,它返回一个QByteArray对象,然后可以将这个字节数组转换为char*。但是这种方法不适用于Unicode环境,因为它会丢失Unicode信息。 ...

    char TCHAR WCHAR区别

    这意味着`TCHAR`可以在非Unicode环境下表示`char`类型,在Unicode环境下表示`WCHAR`类型,提供了一种编写既可兼容ASCII又可兼容Unicode代码的方式。这在需要编写同时支持两种编码模式的代码时特别有用。 #### 大小...

    char*转为LPCWSTR

    2. **`LPCWSTR`**:这是“Long Pointer to Constant Wide String”(指向常量宽字符串的长指针)的缩写,表示一个指向宽字符(通常是 UTF-16 编码)的常量字符串的指针。在 Unicode 编译模式下,宽字符通常占用两个...

    VC下实现fopen支持中文的方法

    bool UTF8ToUnicode(const char* UTF8, wchar_t* strUnicode) { DWORD dwUnicodeLen; //转换后Unicode的长度 TCHAR *pwText; //保存Unicode的指针 // wchar_t* strUnicode; //返回值 //获得转换后的长度,并分配...

    关于char,_wchar_t,_TCHAR,__T(),L,宏__T、TEXT,_TEXT、L.

    2. **`_wchar_t`**: 这是宽字符类型,用于处理Unicode编码,通常占用两个字节,可以表示更多的字符集,如UTF-16。在Windows平台上,`_wchar_t` 是等价于`wchar_t` 的类型,而在其他遵循C++标准的系统中,`wchar_t` ...

    在C和C++中使用Unicode

    - 随着Unicode标准的发展,出现了多种不同的编码方式,如**UTF-16**(默认的Unicode编码)、**UTF-8**以及**UTF-32**等。每种编码方式都有其特定的应用场景和优势。例如,UTF-8因其良好的向后兼容性和高效性而成为...

    VC++的Unicode编程

    8. **兼容性问题**: 当Unicode程序与非Unicode程序交互时,可能需要进行字符编码转换,例如,读取ANSI格式的配置文件或使用不支持Unicode的第三方库。 9. **调试和输出**: 在调试时,注意宽字符和窄字符的差异,...

    MBCS编码和UNICODE编码的相互转换.pdf

    2. **类型转换**:将原本使用char的数据类型替换为TCHAR,如char -> TCHAR,char * -> LPTSTR,const char * -> LPCTSTR。 3. **字符串宏**:字符串常量应使用_T()宏,如"string" -> _T("string")。 4. **函数替换...

    WINDOWS下UNICODE操作.txt

    对于 Unicode 文件,常见的 BOM 包括 `0xFF 0xFE`(UTF-16LE)或 `0xFE 0xFF`(UTF-16BE)。 #### 十二、检测字符串编码 除了通过 BOM 来识别编码外,还可以使用 `IsTextUnicode` 函数来检测字符串是否为 Unicode。...

    MBCS编码和UNICODE编码的相互转换.docx

    `TCHAR`是一个typedef,当_UNICODE被定义时,它代表`wchar_t`,否则代表`char`。类似地,`_tcslen`、`_tcscmp`等函数是与`str`系列函数对应的Unicode版本。字符串常量前加上`_T`或`TEXT`宏,可以自动转换为宽字符或...

    Unicode ANSI 自负处理类

    目前最常用的Unicode变种是UTF-8,它是一种可变长度的编码方式,能够高效地存储大量的字符。 相比之下,ANSI编码通常指的是特定区域的本地化版本的ASCII编码,比如在美国,ANSI编码就是Windows默认的代码页1252,它...

    MFC工程中,几种常见数据类型的转换

    WideCharToMultiByte(CP_UTF8, NULL, (LPCWSTR)dvrserverip, wcslen(dvrserverip), (LPSTR)szServerip, 256, NULL, FALSE); 在上面的代码中,我们可以看到,MultiByteToWideChar 函数和 WideCharToMultiByte 函数都...

    编码、乱码、emoji.docx

    如果定义了`UNICODE`宏,则`TCHAR`将被定义为`wchar_t`,否则为`char`。`_TEXT`则根据`UNICODE`宏的存在与否,在字符串前添加适当的前缀(如`L`或`u`),以指示字符串的编码方式。 #### 六、示例分析 - **GBK与...

    C++储存类型修饰符

    - **Unicode**:一种国际标准的字符编码方案,旨在统一所有语言的字符表示,最常见的实现形式是UTF-16和UTF-8。 C++中定义了几个关键的数据类型来支持这两种不同的编码: - `char`:用于ANSI编码。 - `wchar_t`:...

    C语言中字符和字符串处理(ANSI字符和Unicode字符)

    例如,`TCHAR`是一个类型定义,它可以是`char`(ANSI)或`wchar_t`(Unicode),取决于`UNICODE`是否被定义。类似的,`PTCHAR`, `PTSTR`, `PCTSTR`也是根据`UNICODE`定义来决定是指向8位或16位字符的指针。`TEXT`宏...

    ANSICaUNICODE.rar_Linux/Unix编程_Unix_Linux_

    描述中提到的是ANSI C与Unicode,以及TCHAR、wchar_t和char类型的差异,这些都是在处理文本和字符串时需要理解的关键概念。 **ANSI C与Unicode:** ANSI C,即C89标准,是C语言的一个早期版本,它不直接支持Unicode...

    Tinyxml 源代码(VC6 & VS2005)

    TinyXML完全支持UTF-8编码和前64k个字符实体(译注:如果你不明白这句译文,可能你需要了解一下Unicode编码</i>)。 它无法做些什么 TinyXML不解析不使用DTDs(文档类型定义)或者XSLs(可扩展样式表语言)。有...

    VC++ String

    - **Unicode**:在Win32中通常使用UTF-16编码,每个字符占用两个字节(对于常用字符而言),这样可以保持与DBCS兼容。 ##### 4. 字符串处理函数的使用 - **传统C风格的字符串处理函数**:如`strlen()`、`strcpy()`...

Global site tag (gtag.js) - Google Analytics