MFC格式转换 UTF8 ANSI UNICODE

函数拿起来就可以用

参数说明:sChartSet : FromANSI(ANSI->UNICODE) , ToANSI (UNICODE->ANSI) , FromUTF8 (UTF8->UNICODE) , ToUTF8 (UNICODE->UTF8)

CString CSqlConTestDlg::UnicodeCovert(CString sSourceStr , CString sCharSet)

{

bool bToUnicode = true;

if(!strnicmp(sCharSet,"To",2))

{

sCharSet = sCharSet.Mid(2);

bToUnicode = FALSE;

}

else if(!strnicmp(sCharSet,"From",4))

{

sCharSet = sCharSet.Mid(4);

}

else

{

return "";

}

UINT nCodePage = CP_ACP;

if(stricmp(sCharSet,"ANSI") == 0 || stricmp(sCharSet,"ACP") == 0)

nCodePage = CP_ACP; //ANSI translation

else if(stricmp(sCharSet,"UTF8") == 0)

nCodePage = CP_UTF8; //UTF8 translation

else

return "";

CString sCovert;

if(bToUnicode) //->Unicode

{

DWORD nWideBuf = MultiByteToWideChar(nCodePage , 0 , (LPCTSTR)sSourceStr , sSourceStr.GetLength(),NULL,0); //探测转成Unicode的长度

sCovert.GetBufferSetLength(nWideBuf*2);

MultiByteToWideChar(nCodePage,0,(LPCTSTR)sSourceStr,sSourceStr.GetLength(),(LPWSTR)LPCTSTR(sCovert),nWideBuf);

}

else //Unicode - >

{

DWORD nWideCount = (sSourceStr.GetLength() + 1) * 2;

if(nWideCount == 0)

sCovert.Empty();

else

{

int nMultilen = WideCharToMultiByte(nCodePage, 0 , (LPWSTR)LPCTSTR(sSourceStr),nWideCount,sCovert.GetBufferSetLength(nWideCount),0);

sCovert.GetBufferSetLength(nMultilen);

}

}

return sCovert;

}

时间: 2024-10-14 18:33:55

MFC格式转换 UTF8 ANSI UNICODE的相关文章

python 保存文本txt格式之总结篇,ANSI,unicode,UTF-8

是否还曾记得如何保存成想要格式,那是多么的折腾,是不是莫名起码就变成ANSI或者UTF-8了 今天我来让大家随心所欲的保存想要的格式 首先说下今天的主角 import codecs 使用他才能保存成想要的格式 工作原理,首先把保存的数据解码程unicode格式,然后对应相应的编码,写入文件即可 文本格式对应表 ANSI---->GBK UTF-8---->UTF-8 Unicode---->UTF-16 只有中间才是对应的,其他都是不对应的,多坑爹 基本操作就是 #!/usr/bin/e

字符串处理 - ANSI - Unicode - UTF8 转换

#include <stdio.h> #include <windows.h> #include <locale.h> #define BUFF_SIZE 1024 wchar_t * ANSIToUnicode( const char* str ) { int textlen ; wchar_t * result; textlen = MultiByteToWideChar( CP_ACP, 0, str,-1, NULL,0 ); result = (wchar_t

Ansi UNICODE,GBK,UTF-8区别

http://my.oschina.net/saintzbs/blog/165034 http://my.oschina.net/saintzbs/blog/165034 http://www.cnblogs.com/cy163/archive/2007/05/31/766886.html 1:可以借助于文本编辑页面和Compare进行理解.      Unicode.utf-8.GB2312等,但是在windows命令行里敲notepad进入文本编辑页面.保存时需要选择编码方式,但是不存在GB

关于ANSI,unicode与utf-8的区别

关于ANSI,unicode与utf-8的区别 非常好的一篇文章,值得一看,特转之 关于编码ansi.GB2312.unicode与utf-8的区别 先做一个小小的试验: 在一个文件夹里,把一个txt文本(文本里包含“今天的天气非常好”这句话)分别另存为ansi.unicode.utf-8这三种编码的txt文件.然后,在该文件夹上点击右键,选择“搜索(E)…”. 搜索“天气”二字,可以搜索出ansi和unicode这两种编码的txt文件,搜索不出utf-8编码的文件. 原因: 1.中文操作系统默

(转载)GBK、UTF8、UNICODE编码转换

GBK.UTF8.UNICODE编码转换 1 string GBKToUTF8(const std::string& strGBK) 2 { 3 int nLen = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0); 4 WCHAR * wszUTF8 = new WCHAR[nLen]; 5 MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, wszUTF8, nLen);

utf-8、unicode 、nsstring转换

一.nsstring转utf-8 NSString * str1=[@"你好" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 二.utf-8转unicode NSString * title=[self utf8ToUnicode:@"你好"]; - (NSString *) utf8ToUnicode:(NSString *)string { NSUInteger length =

Source Insight完美转换UTF-8 到 GB2312

前言 很多人用source insight 打开某些源码文件时,汉字显示为一堆乱码.这个问题是因为编码方式不同.记事本和一些编辑器默认编码方式是ANSI,在这种方式下输入汉字,其实就是GB系列的编码方式.不幸的是,广收欢迎的代码查看工具Source insight 虽然支持汉字,但是它不支持UTF-8.笔者感到疑惑的是,当初开发source insight的这帮人现在哪里去了?这么好的工具,却不再更新了,实在让人可惜. 可惜归可惜,程序还是要看.乱码怎么办?用记事本打开源代码逐个转换的笨方法虽然

Python中GBK, UTF-8和Unicode的编码问题

编码问题,一直是使用python2时的一块心病.几乎所有的控制台输入输出.IO操作和HTTP操作都会涉及如下的编码问题: UnicodeDecodeError:‘ascii’codec can’t decodebyte0xc4inposition10:ordinalnotinrange(128) 这究竟是是个什么东西?!有时稀里糊涂地用一坨encode(),decode()之类的函数让程序能跑对了,可是下次遇到非ASCII编码时又悲剧了. 那么Python 2.x中的字符串究竟是个什么呢? 基本

Sql日期时间格式转换

Sql日期时间格式转换 sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/ CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 /*varchar(10)表示日期输出的格式,如果不够长会发生截取*/ 语句及查询结果:Select CONV