【转载】实现UTF8与GB2312编码格式相互转换(VC)已经验证!

UTF-8编码:[1,1,1,0,A5,A6,A7,A8],[1,0,B3,B4,B5,B6,B7,B8],[1,0,C3,C4,C5,C6,C7,C8];对应的UNICODE编码:[A5,A6,A7,A8,B3,B4,B5,B6],[B7,B8,C3,C4,C5,C6,C7,C8]CString
LogInDlg::GB2312ToUTF8(char
*str)
{
 CString
result;
 WCHAR *strSrc = NULL;
 TCHAR
*szRes = NULL;
 int
i;
 
 //GB2312转换成Unicode
  i
= MultiByteToWideChar(CP_ACP, 0, str, -1, NULL,
0);
  strSrc = new
WCHAR[i+1];
  MultiByteToWideChar(CP_ACP, 0, str, -1,
strSrc,
i);
 
 //Unicode转换成UTF8
 i
= WideCharToMultiByte(CP_UTF8, 0, strSrc, -1, NULL, 0, NULL,
NULL);
 szRes = new
TCHAR[i+1];
 WideCharToMultiByte(CP_UTF8, 0, strSrc, -1,
szRes, i, NULL, NULL);
 
 result =
szRes;
 if (strSrc !=
NULL)
 {
  delete
[]strSrc;
  strSrc =
NULL;
 }
 if (szRes !=
NULL)
 {
  delete
[]szRes;
  szRes =
NULL;
 }
 
 return
result;
}CString LogInDlg::UTF8ToGB2312(char
*str)
{
 CString
result;
 WCHAR *strSrc = NULL;
 TCHAR
*szRes = NULL;
 int
i;
 
 //
UTF8转换成Unicode
 i = MultiByteToWideChar(CP_UTF8, 0, str,
-1, NULL, 0);
 strSrc = new
WCHAR[i+1];
 MultiByteToWideChar(CP_UTF8, 0, str, -1,
strSrc, i);
 
 //
Unicode转换成GB2312
 i = WideCharToMultiByte(CP_ACP, 0,
strSrc, -1, NULL, 0, NULL, NULL);
 szRes = new
TCHAR[i+1];
 WideCharToMultiByte(CP_ACP, 0, strSrc, -1,
szRes, i, NULL, NULL);
 
 result =
szRes;
 if (strSrc !=
NULL)
 {
  delete
[]strSrc;
  strSrc =
NULL;
 }
 if (szRes !=
NULL)
 {
  delete
[]szRes;
  szRes =
NULL;
 }
 
 return
result;
}

参考网址:

http://www.codeproject.com/KB/string/UTF8.aspx

【转载】实现UTF8与GB2312编码格式相互转换(VC)已经验证!,码迷,mamicode.com

时间: 2024-11-10 01:18:22

【转载】实现UTF8与GB2312编码格式相互转换(VC)已经验证!的相关文章

批量更改文件编码格式 utf8到gb2312

一.查看文件编码 file name://可以显现文件的编码格式(有的系统不可以) 二.文件编码转换 使用iconv转换, iconv -f encoding -t encoding inputfile; 例如:iconv -f utf-8 -t gb2312 file1; 用法:iconv [选项..]  [文件] -f, 原始编码 -t,输出编码 信息: -l,---list 列举系统所有安装的已知字符集 输出控制: -c 从输出中忽略无效的字符 -o ---output  输出文件 实例:

编码方式的比较,以及UTF-8,gb2312的选择

经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. ● 为什么有这么多编码? ● UTF-8和GB2312有什么区别? ● 我们在国内做网站是用UTF-8编码格式还是GB2312编码格式好? 一. 各种编码的来历 可能很多同学一直对字符的各种编码方式懵懵懂懂,根本搞不清为什么他们有这么多编码. ANSI编码 其实在很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合

做网站用UTF-8还是GB2312 & 各国语言对应字符集

经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. ● 为什么有这么多编码? ● UTF-8和GB2312有什么区别? ● 我们在国内做网站是用UTF-8编码格式还是GB2312编码格式好? 一. 各种编码的来历 可能很多同学一直对字符的各种编码方式懵懵懂懂,根本搞不清为什么他们有这么多编码. ANSI编码 其实在很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合

在js里UTF-8与GB2312的互转

js的函数如下: function GB2312UTF8() { this.Dig2Dec = function(s) { var retV = 0; if (s.length == 4) { for (var i = 0; i < 4; i++) { retV += eval(s.charAt(i)) * Math.pow(2, 3 - i); } return retV; } return - 1; } this.Hex2Utf8 = function(s) { var retS = "

c# UTF-8转gb2312

/// <summary> /// UTF8转换成GB2312 /// </summary> /// <param name="text"></param> /// <returns></returns> public static string UTF8ToGB2312(string str) { try { Encoding utf8 = Encoding.UTF8; Encoding gb2312 = Enc

PHP iconv 解决utf-8和gb2312编码转换问题

终于皇天不负有心人,答案还是让我找到了. 网上的都是这样用的 代码如下: $content = iconv("utf-8","gb2312",$content); 这样做其实也对着了,看着确实是把utf-8转化为gb2312了,但是实际运行的话,往往都是以失败告终的,原因呢? 原因实际上也很简单,因为任何的函数都是执行错误的时候,同时很不幸的是iconv();就很终于出现错误.现在给你正确的答案. 真正的答案是这样的 复制代码 代码如下: $content = ic

UTF-8和GB2312互转的最简单快捷的方法

一.如果你想把utf-8转为GB2312 1.用记事本打开源码,把<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />换成<meta http-equiv=Content-Type content="text/html;charset=gb2312">:如果是JS不需要加这句,如果是网页最好加上这句和你页面对应的编码. 2.用记事本打开源

Source Insight完美转换UTF-8 到 GB2312

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

utf8转为gb2312的函数

from:http://blog.csdn.net/qianguozheng/article/details/46429245 // 代码转换操作类 class CodeConverter { private: iconv_t cd; public: // 构造 CodeConverter(const char *from_charset,const char *to_charset) { cd = iconv_open(to_charset,from_charset); } // 析构 ~Co