`
zerosoul
  • 浏览: 25426 次
  • 性别: Icon_minigender_1
  • 来自: Earth
社区版块
存档分类
最新评论

自己写函数实现方便的Unicode/ANSI编码转换

阅读更多
最近写毕业设计,为了程序通用性使用的Unicode编码,但在Socket编程这方面要经常Unicode和ANSI编码相互转换,很麻烦,今天实在烦的不行了,就干脆写两个方便点的自定义函数方便调用。

代码实在是相当简单,没有一点技术含量,不过的确省了我很多心,真应该一开始就写这个。

/*
By zerosoul @ 2011.2.26
这两个函数的优点是调用方便返回值直接就是转换后的字符串
在VC的程序中,可以把这段代码写入stdafx.cpp,然后再stdafx.h填下面两行,就是全局函数了,在哪都可以调用:
extern WCHAR* Ansi2Unicode(char* szMultiByte);
extern char* Unicode2Ansi(WCHAR* szWideChar);
*/
#include "stdafx.h"
#include "stdio.h"  
#include "windows.h"  

//ANSI_2_UNICODE
WCHAR* Ansi2Unicode(char* szMultiByte)
{
	int nLen = MultiByteToWideChar(CP_ACP,NULL,szMultiByte,-1,NULL,0);  
	if (0 == nLen)
	{
		wprintf(L"MultiByteToWideChar() failed, Error Code : [%d]\n",GetLastError());
		return NULL;
	}
	WCHAR* szWideChar = new WCHAR[nLen];  //Unicode宽字节编码字符串szWideChar  
	MultiByteToWideChar(CP_ACP,NULL,szMultiByte,-1,szWideChar,nLen); //开始转换  
	return szWideChar;
}

//UNICODE_2_ANSI
char* Unicode2Ansi(WCHAR* szWideChar)
{
	int nLen = WideCharToMultiByte(CP_ACP,NULL,szWideChar,-1,NULL,0,NULL,NULL);  
	if (0 == nLen)
	{
		wprintf(L"WideCharToMultiByte() failed, Error Code : [%d]\n",GetLastError());
		return NULL;
	}
	char* szMultiByte = new char[nLen];  //Unicode宽字节编码字符串szWideChar  
	WideCharToMultiByte(CP_ACP,NULL,szWideChar,-1,szMultiByte,nLen,NULL,NULL); //开始转换  
	return szMultiByte;
}

int wmain(int argc, WCHAR* argv[])
{
	char strMultiByte[] = "zerosoulANSI\n";   //ANSI多字节编码字符串strMultiByte  
	WCHAR strWideChar[] = L"zerosoulUNICODE\n"; //Unicode宽字节编码字符串strWideChar  
	wprintf(Ansi2Unicode(strMultiByte));
	printf(Unicode2Ansi(strWideChar));  
	return 0;
}
2
4
分享到:
评论

相关推荐

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

    1. **从ANSI到Unicode**:首先需要确定ANSI编码类型,然后使用相应的转换函数将ANSI字符集转换成Unicode字符集。在Windows平台上,可以使用`MultiByteToWideChar`函数实现这一过程。 2. **从Unicode到ANSI**:这个...

    易语言Ansi与Unicode转换源码

    3. **转换过程**:使用易语言提供的函数或自定义的函数,将Ansi编码的字符串转换为Unicode编码。这可能涉及到对每个字符的编码值进行计算和重新映射。 4. **写入Unicode文本**:将转换后的Unicode字符串写入新的...

    windows平台unicode和ansi编码相互转化的两个的函数

    unicode和ansi编码相互转化的两个的函数 window平台下的

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

    1. ANSI编码:通常指的是Windows系统的默认编码,如GBK或CP936,它是一种多字节编码,不支持所有Unicode字符。 2. Unicode:这是一个标准,定义了所有已知字符的唯一数字表示,分为Little Endian和Big Endian两种...

    unicode转ansi源码 带码表 不使用系统api

    网上找了好多都没有源码,参考...unicode2ansi---------------vc工程 unicode到ansi编码转换的例子,有函数,有调用 bldunitable----------------别人的代码,用来生成码表的,“unicode2ansi码表1.txt”就是他生成的

    Unicode与ANSI字符串之间的转换

    本文将深入探讨 Unicode 与 ANSI 字符串之间的转换原理及实现方法,并通过一个具体的示例来展示如何在 C/C++ 环境中实现这两种字符串类型的转换。 ### Unicode 与 ANSI 的基本概念 #### Unicode Unicode 是一种...

    Android手机端转换Ansi字符串,手机怎么转换为ansi编码,Delphi

    6. **字符串转换函数**:在Delphi中,可以使用`WideString`到`AnsiString`的转换函数,如`Ansistring(WideString)`,或者使用`System.SysUtils`单元中的`UTF8ToAnsi`和`AnsiToUTF8`函数进行编码转换。 7. **平台...

    Android手机端转换Ansi字符串,手机怎么转换为ansi编码,Delphi源码.rar

    Ansi编码,也称为Windows默认的ANSI编码(通常基于locale的代码页,如GBK或CP1252),在桌面应用中广泛使用,但在Android这种基于Unicode的系统上可能不常见。本主题将深入探讨如何在Android手机端进行Ansi字符串的...

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

    在MFC项目中,由于MFC是基于Windows API的,所以可以利用Windows API函数来进行编码转换。例如,`MultiByteToWideChar`和`WideCharToMultiByte`函数可以分别用于ANSI到Unicode和Unicode到ANSI的转换。在MFC项目中...

    易语言Ansi与Unicode转换源码.7z

    3. **转换函数**:易语言提供了内置的函数或API,用于进行编码转换,如`字符串.转换编码(原字符串, 原编码, 目标编码)`,这个函数将按照指定的原编码和目标编码进行转换。 4. **错误处理**:在转换过程中,可能会...

    VC/C++ 字符编码格式转换

    在提供的`main.cpp`文件中,很可能会包含使用这两个API函数实现的编码转换示例。你可以通过编译并运行这个文件,观察其转换效果。配合`字符编码格式转换说明文档.docx`,你将能得到更详细的步骤和注意事项。 总的来...

    UNICODE和GBK编码转换

    ### UNICODE和GBK编码转换 #### 知识点概述 本文将详细介绍如何在Windows平台上实现UNICODE与GBK(简体中文编码)之间的转换。这涉及到字符集的基础知识、Windows API函数的使用以及具体的代码实现。 #### 字符...

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

    字符串编码转换详解 在计算机编程中,字符串编码是一种非常重要的概念。不同的编码方式决定了字符串在内存中的存储方式和占用空间的大小。在 Windows 操作系统中,常见的字符串编码方式有三种:Ansi、Unicode 和 ...

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

    开发者可能使用了面向对象的设计模式,将编码转换的核心逻辑封装成独立的类或函数,通过参数指定源编码和目标编码,从而实现对不同编码格式的支持。 综上所述,"UTF-8转ANSI文本文件转换器"涉及到了字符编码的基础...

    Ansi与Unicode转换.rar

    本资源“Ansi与Unicode转换.rar”显然包含了关于这两种编码之间转换的易语言源代码,这对于学习和理解字符编码转换机制非常有帮助。 首先,让我们详细了解一下Ansi和Unicode: 1. Ansi编码:Ansi并不是一个特定的...

    ANSI UNICODE UTF8转换

    另外,对于非ASCII字符,ANSI编码转换为UNICODE或UTF-8时可能需要进行多字节序列的解析和组合。 总之,理解和掌握ANSI、UNICODE和UTF-8的编码转换对于任何IT专业人员来说都是非常基础且重要的技能。通过`...

    UTF8与ansi string转换处理(DELPHI7开发)

    "UTF8_DLL接口说明.txt"文件提供了DLL中函数的详细说明,包括输入参数、返回值以及如何正确调用这些函数来完成字符串编码转换。通常,这样的接口会包含两个主要函数:一个用于将ANSI String转换为UTF8,另一个则相反...

    VB中ANSI转换成UTF-8

    本文将深入探讨如何在VB中将ANSI编码转换为UTF-8编码,以及在实际应用中的网络编程基础知识,特别是利用Winsock控件实现简单的聊天程序。 首先,理解ANSI和UTF-8的区别至关重要。ANSI编码,通常指的是基于特定区域...

    ANSI 和Unicode相互转换的类

    然而,为了确保代码的健壮性和通用性,建议在现代C++项目中使用标准库如`std::wstring_convert`(C++11及以后版本)或第三方库如Boost.Locale来进行编码转换。 总之,ANSI与Unicode的转换是编程中的常见需求,尤其...

    字符串与数字、unicode与ansic之间的转换

    本文将深入探讨在VC++环境下,如何在ASCII、UNICODE以及ANSI编码之间进行字符串与数字的转换,以及Unicode与ANSI之间的转换。 首先,让我们看看字符串转数字的方法。在C运行时库(CRT)中,提供了如`atoi`、`atol`、`...

Global site tag (gtag.js) - Google Analytics