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);
    pUnicode[nLen]= ‘\0‘;
    return pUnicode;
}

(2)UNICODE转ANSI

char * UnicodeToAnsi(const wchar_t *pUnicode)
{
    int nLen = WideCharToMultiByte(CP_ACP,0,pUnicode,wcslen(pUnicode),nullptr,0,nullptr,nullptr);
    char *pAnsi = new char[nLen+1];
    WideCharToMultiByte(CP_ACP,0,pUnicode,wcslen(pUnicode),pAnsi,nLen,nullptr,nullptr);
    pAnsi[nLen] = ‘\0‘;
    return pAnsi;
}
时间: 2024-11-02 23:24:07

ANSI转UNICODE,UNICODE转ANSI的相关文章

unicode string和ansi string的转换函数及获取程序运行路径的代码

#pragma once#include <string> namespace stds { class tool { public: std::string ws2s(const std::wstring& ws) { std::string curLocale = setlocale(LC_ALL, NULL); // curLocale = "C"; setlocale(LC_ALL, "chs"); const wchar_t* _Sou

【ANSI编码和Unicode编码】

最近在对之前的代码进行优化,主要是把界面全部换成GUI形式的(就是市面上的这种),之前进行数据查询的时候没问题,但是换成GUI的时候,由于输入的的是Unicode编码,而处理的时候又强制转换成ANSI编码,经过一番查阅(刚开始还以为强制转换是万能的....),才发现...看来之前还是低估了它~~~ 以下是相关的介绍 常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串处理函数,比如:strlen和wcslen,分别用于

Convert CString to ANSI string in UNICODE projects

Convert CString to ANSI string in UNICODE projects Quick Answer: use an intermediate CStringA. Normally, this is not something that should be done. *It is technically unreliable, unless you can guarantee that the source CString to be converted does n

各种格式ANSI,UTF8,Unicode,Unicode BigEndian的解释

一.ANSI编码 不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准.这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码.在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码. 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中. 当然对于ANSI编码而言,0x00~0x7F之间的字符,依旧是1个字

字符和字符串处理-ANSI字符和Unicode字符

我们知道,C语言用char数据类型表示一个8位的ANSI字符,默认在代码中声明一个字符串时,C编译器会把字符串中的字符转换成由8位char数据类型构成的一个数组: // An 8-bit character char c = 'A'; // An array of 99 8-bit character and 8-bit terminating zero char szBuffer[100] = "A String"; Microsoft的C/C++编译器定义了一个内建的数据类型wch

Unicode, UTF, ASCII, ANSI format differences

Going down your list: "Unicode" isn't an encoding, although unfortunately, a lot of documentation imprecisely uses it to refer to whichever Unicode encoding that particular system uses by default. On Windows and Java, this often means UTF-16; in

ANSI码和UNICODE码

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

python中的字符串编码问题——2.理解ASCII码、ANSI码、Unicode编码、UTF-8编码

ASCII码:全名是American Standard Code for Information Interchange,ASCII码中,一个英文字母(不分大小写)占一个字节的空间,范围0x00~0x7f,即0-128. ANSI码:ANSI编码是一种对ASCII码的拓展.ANSI编码用0x00~0x7f 范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符.前126个与ASCII码相同,之后的字符全是某个国家语言的所有字符.容量2的16次

Unicode 转码 Ansi ,用于读取注册表后的值转换

1 char* UnicodeToAnsi(TCHAR* wstr) //转换字符编码 2 { 3 if( !wstr ) 4 return NULL; 5 6 int strlen = ::WideCharToMultiByte(CP_ACP, NULL, wstr, wcslen(wstr), NULL, 0, NULL, FALSE); 7 char* str = new char[strlen + 1]; 8 ::WideCharToMultiByte(CP_ACP, NULL, wst