Unicode与Ansi互转

 1 BOOL CTool::AnsiToUnicode(const char *pSrc, CString &strResult)
 2 {
 3 #ifndef _UNICODE
 4     return FALSE;
 5 #endif
 6     int nLen=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pSrc,-1,NULL,0);
 7     strResult.Empty();
 8     if(nLen==0)
 9         return FALSE;
10     wchar_t* pResult=new wchar_t[nLen];
11     MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pSrc,-1,pResult,nLen);
12     strResult.Format(_T("%s"),pResult);
13     delete[] pResult;
14     pResult=NULL;
15     return TRUE;
16 }
17
18 wchar_t* CTool::AnsiToUnicode(const char *szStr)
19 {
20     int nLen=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,szStr,-1,NULL,0);
21     if(nLen==0)
22         return NULL;
23     wchar_t* pResult=new wchar_t[nLen];
24     MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,szStr,-1,pResult,nLen);
25     return pResult;
26 }
27
28 char* CTool::UnicodeToAnsi(const wchar_t *szStr)
29 {
30     int nLen=WideCharToMultiByte(CP_ACP,0,szStr,-1,NULL,0,NULL,NULL);
31     if(nLen==0)
32         return NULL;
33     char* pResult=new char[nLen];
34     WideCharToMultiByte(CP_ACP,0,szStr,-1,pResult,nLen,NULL,NULL);
35     return pResult;
36 }

后面两个函数返回一个new的指针,接收用完后需要自己手动释放

时间: 2024-11-14 14:29:26

Unicode与Ansi互转的相关文章

c++ ANSI、UNICODE、UTF8互转

static std::wstring MBytesToWString(const char* lpcszString);    static std::string WStringToMBytes(const wchar_t* lpwcszWString);    static std::wstring UTF8ToWString(const char* lpcszString);    static std::string WStringToUTF8(const wchar_t* lpwcs

跨平台Unicode与UTF8互转代码

参考来源:http://blog.csdn.net/flying8127/article/details/1598521 在原来原基础上,将代码整理,并加强安全性. 并按照WindowsAPI设计, 添加输出缓冲长度探测功能 当OutUTFString为NULL时, 可以进行输出的UTF8字符串长度探测 1: uint32 UniCharToUTF8(wchar_t UniChar, char *OutUTFString) 2: { 3:   4: uint32 UTF8CharLength =

Native2asciiUtil 文本文件转UNICODE编码文件(支持UTF-8,Unicode,UTF-16BE,ANSI|ASCII,GBK)

package com.ctl.util; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * * @author Administrator * @Description \u5C06\u6587\u672C\u6587\u4EF6\u8F6C\

字符编码(续)---Unicode与ANSI字符串转换以及分辨字符编码形式

Unicode与ANSI字符串转换 我们使用windows函数MultiByteToWideChar将多字节字符串转换为宽字符字符串,如下: int MultiByteToWideChar( UINT uCodePage, DWORD dwFlags, PCSTR pMultiByteStr, int cbMultiByte, PWSTR pWideCharStr, int cchWideChar); uCodePage参数标识了与多字节字符串关联的一个代码页值.dwFlags参数允许我们进行额

ANSI转UNICODE,UNICODE转ANSI

(1)ANSI转UNICODE wchar_t * AnsiToUnicode(const char *pAnsi) {     int nLen = MultiByteToWideChar(CP_ACP,0,pAnsi,strlen(pAnsi),nullptr,0);     wchar_t *pUnicode = new wchar_t[nLen+1];     MultiByteToWideChar(CP_ACP,0,pAnsi,strlen(pAnsi),pUnicode,nLen);

Creating Dialogbased Win32 Application (4) / 创建基于对话框的Win32应用程序(四)Edit Control的应用、Unicode转ANSI、自动滚动 / Win32, VC++, Windows

创建基于对话框的Win32应用程序(四)——Edit Control的应用.Unicode转ANSI.自动滚动 之前的介绍中,我们用到了Button.Static Text.Checkbox这三个控件.这一节中我们将学习使用Edit Control(编辑框)控件,其中还包括Unicode转ANSI的方法.文本框自动滚动的功能等. 24.首先切换到Reasource View(Ctrl+Shift+E),找到待修改的主窗体,并从Toolbox(Ctrl+Atl+X)中添加Edit Control控

UNICODE与ANSI的区别

什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit.(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容.目前,在网络.Windows系统和很多大型软件中得到应用.8bit的ANSI编码只能表示256种字符,表示26个英文字母是绰绰有余的,但是表示汉字,韩国语等有着

Unicode、ANSI、UTF-8、GBK详谈

最近在写网络通信上的一些东西,快被这些编码格式搞崩溃了. 一.什么是编码 编码是对现有"符号"进行转化,可以存储在计算机中,在没有计算机时,我们的使用的"符号",都是手写的,我们的大脑对其编码,这样我们就能记住和识别.但计算机只能存储电信号,即二进制.所以,我们需要对其编码,能使计算机储存. 各个国家和地区所制定了不同 ANSI 编码标准中,都只规定了各自语言所需的"字符".这样就不利于交流,所以就有了Unicode编码. 名词解析: 1.ANS

几个Unicode新知识:扩展ANSI有很多种(256个字符),Unicode表示ANSI字符时高字节为0,Unicode不包括古代字符

都是有些模糊的概念,特别是Unicode不包括古代字符让我有点惊讶.看来Unicode只适用于大多数情况,一旦有无法表示的字符,那该怎么办呢? ANSI针对英语设计的,当处理带有音调标号(形如汉语的拼音)的欧洲文字时就会出现问题.因此,创建出了一些包括255个字符的由ASCII扩展的字符集.其中有一种通常被称为IBM字符集,它把值为128-255之间的字符用于画图和画线,以及一些特殊的欧洲字符.另一种8位字符集是ISO 8859-1 Latin 1,也简称为ISO Latin-1.它把位于128