`

英文系统下unicode ansi utf8

 
阅读更多

一:

代码

1Ansi_1252_ToUnicode

//Ansi_1252_ToUnicode
void Ansi_1252_ToUnicode_By936() 
{ 
	char* szAnsi = "Äã"; //szAnsi=Äã
	int wcsLen = MultiByteToWideChar(936, NULL, szAnsi, strlen(szAnsi), NULL, 0); 
	wchar_t* wszString = new wchar_t[wcsLen + 1]; 
	MultiByteToWideChar(936, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen); 
	wszString[wcsLen] = '\0'; //wszString = 0x002f54d0 L"你"
}  

void Ansi_1252_ToUnicode_swprintf() 
{ 
	char* szAnsi = "Äã"; //szAnsi = 0x010d8884 "Äã"
	wchar_t wcsStr[100]; 
	//注意下面是大写S,在unicode中,代表后面是ansi字符串 
	//swprintf是sprintf的unicode版本 
	//格式的前面要加大写L,代表是unicode 
	swprintf(wcsStr,100, L"%S", szAnsi); //wcsStr = 0x001df9cc L"你"
}

 2UnicodeToAnsi

void UnicodeToAnsi_sprintf_s()
{ 
	wchar_t* wszString = L"你"; 
	char szStr[100]; 
	//注意下面是大写,在ansi中,代表后面是unicode字符串 
	//sprintf 
	sprintf_s(szStr, "%S", wszString); //szStr = 0x0031fd3c "Äã"
} 
void UnicodeToAnsi_By936() 
{ 
	wchar_t wszStringSource[] = L"你"; 
	int ansiLen = WideCharToMultiByte(936, NULL, wszStringSource, wcslen(wszStringSource), NULL, 0, NULL, NULL); 
	char* szAnsi = new char[ansiLen + 1]; 
	WideCharToMultiByte(936, NULL, wszStringSource, wcslen(wszStringSource), szAnsi, ansiLen, NULL, NULL); 
	szAnsi[ansiLen] = '\0'; //szAnsi = 0x00547bf8 "Äã"
}
void Unicode_1252_ToAnsi_By1252() 
{ 
	wchar_t* wszString = L"Äã";//wszString = 0x010988a8 L"Äã"
	int ansiLen = WideCharToMultiByte(1252, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL); 
	char* szAnsi = new char[ansiLen + 1]; 
	WideCharToMultiByte(1252, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL); 
	szAnsi[ansiLen] = '\0'; //szAnsi = 0x00085548 "Äã"
} 

void Unicode_1252_ToAnsi_sprintf_s()
{ 
	wchar_t* wszString = L"Äã"; 
	char szStr[100]; 
	//注意下面是大写,在ansi中,代表后面是unicode字符串 
	//sprintf 
	sprintf_s(szStr, "%S", wszString); //szStr = 0x0020f698 "Äã"
}

 

3utf8ToUnicode

void utf8ToUnicode_ByCP_UTF8() 
{ 
	char szU8[] = "你我他";
	int wcsLen = MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0); 
	wchar_t* wszString = new wchar_t[wcsLen + 1]; 
	MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen); 
	wszString[wcsLen] = '\0'; //wszString = 0x003e5518 L"你我他"
}

void U8ToUnicode() 
{ 
	char* szU8 = "abcd1234\xe4\xbd\xa0\xe6\x88\x91\xe4\xbb\x96\x00"; //和utf8ToUnicode_ByCP_UTF8()一样
	int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0); 
	wchar_t* wszString = new wchar_t[wcsLen + 1]; 
	MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen); 
	wszString[wcsLen] = '\0'; //wszString = 0x0040a5f8 L"abcd1234你我他"
} 
 

4unicode to utf8

void UnicodeToU8_ByCP_UTF8() 
{ 
	// unicode to UTF8 
	wchar_t* wszString = L"你我他"; 
	int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL); 
	char* szU8 = new char[u8Len + 1]; 
	WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), szU8, u8Len, NULL, NULL); 
	szU8[u8Len] = '\0'; //szU8 = 0x000b5548 "abcd1234ä½ æˆ‘ä»–"
} 

 5

//lBuffer = 0x0027e9ac L"Äã"
	int u8Len = WideCharToMultiByte(CP_UTF8, NULL, lBuffer, wcslen(lBuffer), NULL, 0, NULL, NULL); 
	char* szU8 = new char[u8Len + 1]; 
	WideCharToMultiByte(CP_UTF8, NULL, lBuffer, wcslen(lBuffer), szU8, u8Len, NULL, NULL); 
	szU8[u8Len] = '\0'; //szU8 = 0x001c7958 "Äã"
	int wcsLen = MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0); 
	wchar_t* wszStringDes = new wchar_t[wcsLen + 1]; 
	MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszStringDes, wcsLen); 
	wszStringDes[wcsLen] = '\0'; //wszStringDes = 0x001c5458 L"Äã"

 6

GetPrivateProfileStringA将文件block.ini内容为:Äã读入成char

//szAnsi = 0x00257c78 "Äã"

 

分享到:
评论

相关推荐

    unicode ansi utf8 hex 转换工具

    unicode ansi utf8 hex 转换工具

    lua utf8 unicode ansi 转换

    require "lc" print(lc.help());... u2w(utf8 to unicode) w2a(unicode to ansi) w2u(unicode to utf8) u2a(utf8 to ansi) a2u(ansi to utf8) bstr(bytes of str) help(show this) wunoman@qq.com 2012/03/06

    Ansi Unicode UTF8编码转换及代码示例

    ### ANSI、Unicode与UTF-8编码转换及相关代码示例 #### 一、基本概念解析 在探讨ANSI、Unicode以及UTF-8之间的转换之前,我们首先需要了解这三种编码的基本概念及其应用场景。 - **ANSI编码**:ANSI(American ...

    文本文件编码转换:ANSI、Unicode、UTF-8相互转换(修改版)

    ANSI --> UTF-8 Unicode --> ANSI Unicode --> UTF-8 UTF-8 --> ANSI UTF-8 --> Unicode UTF-8 --> Unicode big endian ansi转别的,不检验BOM,一律作为ansi编码进行转换 unicode转别的,首先检验BOM,不合格不...

    封装ANSI,UNICODE,UTF8互相转换类

    "封装ANSI,UNICODE,UTF8互相转换类"是一个专门解决字符编码转换问题的工具,尤其适用于处理多语言环境下的文本数据。以下是对这些编码方式以及它们之间转换的详细解释: 1. ANSI 编码:ANSI(American National ...

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

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

    unicode ansi utf8 hex 转换工具(源码)

    本文将深入探讨标题和描述中提到的几种字符编码标准:Unicode、ANSI、UTF-8以及HEX,并结合“kjwStrUtils”这个源码库,解析它们在实际应用中的角色和转换方法。 **Unicode** Unicode是一种全球统一的字符集,旨在...

    ANSI UNICODE UTF8转换

    在编程领域,字符编码是处理文本数据的基础,其中ANSI、UNICODE和UTF8是三种常见的字符编码格式。本文将详细解析这些编码方式,并探讨它们之间的转换。 首先,ANSI编码,通常指的是Windows系统下的“代码页”编码,...

    utf-8、ANSI、Unicode相互转化c++实现

    utf-8、ANSI、Unicode相互转化c++实现 std::string ConverANSI2UTF8(const std::string & str); std::wstring ConverANSI2Unicode(const std::string str); std::wstring ConverUTF82Unicode(const std::string str)...

    字符编码转换类,支持 ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom互相转换

    "CharsetConv"类提供了一个工具,帮助开发者在ANSI、Unicode(Little Endian和Big Endian)、UTF-8及UTF-8+BOM之间灵活转换,从而避免编码问题带来的困扰。通过深入学习和实践,开发者可以更好地应对各种编码挑战,...

    Ansi、Unicode、UTF8字符串之间的转换,wprintf

    在 Windows 操作系统中,常见的字符串编码方式有三种:Ansi、Unicode 和 UTF8。今天我们将详细介绍这三种编码方式之间的转换,包括 Ansi 转 Unicode、Unicode 转 Ansi,以及使用 wprintf 函数进行字符串输出。 Ansi...

    C++Builder String,UNICODE,UTF8,ANSI互转的类.rar_c

    在C++Builder编程环境中,处理字符串格式转换是常见的任务,特别是在与不同的编码标准如Unicode、UTF-8和ANSI打交道时。本压缩包文件“C++Builder String, UNICODE, UTF8, ANSI互转的类.rar_c”提供了一个专门用于...

    各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解

    各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解

    [C语言]字符串处理 - ANSI - Unicode - UTF8 转换

    ANSI、Unicode和UTF-8是三种常见的字符编码格式,它们各有特点并适用于不同的场景。了解这些编码之间的转换对于开发跨平台的软件至关重要。 1. ANSI编码:ANSI(美国国家标准协会)编码通常指的是基于特定地区的...

    易语言ansi转utf8纯算法源码

    转换过程中,需要识别ANSI编码中的每个字符,并将其映射到相应的Unicode值,然后用UTF-8编码规则重新表示这个Unicode值。 易语言ansi转utf8的纯算法源码实现这一过程,可能涉及以下关键步骤: 1. **读取ANSI文件**...

    unicode、utf-8、ansi的故事及其相互转换.txt

    ### Unicode、UTF-8、ANSI 的故事及其相互转换 #### 一、基本概念与背景 在探讨 Unicode、UTF-8 和 ANSI 编码之前,我们需要先了解几个基础概念。 **1. 字符编码(Character Encoding):** 字符编码是将人类可读...

    ansi转换为utf8的工具

    这在处理大量非英文文本文件或者需要跨平台交互时尤其有用,因为许多系统和软件默认使用UTF-8编码,对ANSI编码可能不兼容。 标签中的"编码转换"是指改变文件的内部字符编码方式,确保不同系统或程序能够正确识别和...

    utf-8 ansi 字符互转 工具

    总结来说,理解和掌握UTF-8与ANSI字符编码的差异,以及如何进行转换,对于解决跨平台、多语言环境下的文本处理问题至关重要。在日常工作中,我们可以利用各种工具和编程手段,灵活应对不同编码格式带来的挑战。在...

    UTF-8转ANSI文本文件转换器

    "UTF-8转ANSI文本文件转换器"就是这样一个工具,它能够帮助用户批量将UTF-8编码的文本文件转换为ANSI编码的文本文件。在此,我们将深入探讨UTF-8和ANSI编码的原理以及转换过程中涉及的关键知识点。 **一、UTF-8编码...

Global site tag (gtag.js) - Google Analytics