VC++ UTF-8与GBK格式转换

 1 // 注释:多字节包括GBK和UTF-8
 2 int GBK2UTF8(char *szGbk,char *szUtf8,int Len)
 3 {
 4     // 先将多字节GBK(CP_ACP或ANSI)转换成宽字符UTF-16
 5     // 得到转换后,所需要的内存字符数
 6     int n = MultiByteToWideChar(CP_ACP,0,szGbk,-1,NULL,0);
 7     // 字符数乘以 sizeof(WCHAR) 得到字节数
 8     WCHAR *str1 = new WCHAR[sizeof(WCHAR) * n];
 9     // 转换
10     MultiByteToWideChar(CP_ACP,  // MultiByte的代码页Code Page
11         0,            //附加标志,与音标有关
12         szGbk,        // 输入的GBK字符串
13         -1,           // 输入字符串长度,-1表示由函数内部计算
14         str1,         // 输出
15         n             // 输出所需分配的内存
16         );
17
18     // 再将宽字符(UTF-16)转换多字节(UTF-8)
19     n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);
20     if (n > Len)
21     {
22         delete[]str1;
23         return -1;
24     }
25     WideCharToMultiByte(CP_UTF8, 0, str1, -1, szUtf8, n, NULL, NULL);
26     delete[]str1;
27     str1 = NULL;
28
29     return 0;
30 }  
 1 //UTF-8 GBK
 2 int UTF82GBK(char *szUtf8,char *szGbk,int Len)
 3 {
 4     int n = MultiByteToWideChar(CP_UTF8, 0, szUtf8, -1, NULL, 0);
 5     WCHAR * wszGBK = new WCHAR[sizeof(WCHAR) * n];
 6     memset(wszGBK, 0, sizeof(WCHAR) * n);
 7     MultiByteToWideChar(CP_UTF8, 0,szUtf8,-1, wszGBK, n);
 8
 9     n = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
10     if (n > Len)
11     {
12         delete[]wszGBK;
13         return -1;
14     }
15
16     WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGbk, n, NULL, NULL);
17
18     delete[]wszGBK;
19     wszGBK = NULL;
20
21     return 0;
22 }
时间: 2024-12-12 06:19:05

VC++ UTF-8与GBK格式转换的相关文章

Python:将utf-8格式的文件转换成gbk格式的文件

需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: def ReadFile(filePath,encoding="utf-8"): with codecs.open(filePath,"r",encoding) as f: return f.read() def WriteFile(filePath,u,encoding="gbk"): with codecs.open(filePath,"w",encodi

【VC++技术杂谈007】使用GDI+进行图片格式转换

本文主要介绍如何使用GDI+对图片进行格式转换,可以转换的图片格式为bmp.jpg.png. 1.加载GDI+库 GDI+是GDI图形库的一个增强版本,提供了一系列Visual C++ API.为了使用GDI+,需要在工程中包含“GdiPlus.h”头文件,并加载“gdiplus.lib”库文件. 具体实现方法为,下载GDI+库,将下载得到的Gdiplus文件夹放到工程中.Gdiplus文件夹中应当包含有“GdiPlus.h”等一系列头文件.Gdiplus.lib库文件和Gdiplus.dll动

python解析GBK格式xml文件

xml文件 <?xml version="1.0" encoding="GBK"?> <records serial_number="1"> <record id="1" name="admin" password="admin" auth="1" email="" receivedMail="0"

FFmpeg(10)-基于FFmpeg进行像素格式转换(sws_getCachedContext(), sws_scale())

一.包含头文件和库文件 像素格式的相关函数包含在 libswscale.so 库中,CMakeLists需要做下列改动: # swscale add_library(swscale SHARED IMPORTED) set_target_properties(swscale PROPERTIES IMPORTED_LOCATION ${FF}/libswscale.so) target_link_libraries target_link_libraries( # Specifies the t

第八篇:使用字符串流对象进行格式转换

前言 字符串流对象有个很实用的功能就是格式转换.比如可以将整数类型的123转换成字符串格式的123,或者反过来.那么具体又是如何实现的?且看下文. 实现思路 对于整数转换成字符串格式,可设s是一个空的字符串流对象,” 整型变量 “存放目标整数.则当执行" s << 整型变量 "后,该整数将转成字符串格式并存进流中.随后代码中使用" s.str() "即可获取到该整数的字符串格式.对于字符串转换成整数格式,亦可设s是一个空的字符串流对象,” 整型变量 “存

开发利器_ImageMagick.基于Linux命令行的图片缩放/编辑/格式转换?

简单介绍: ImageMagick是一系列的用于修改,加工图像的命令行工具,能够快速地使用命令行对图片进行操作,对大量的图片进行批处理,它能执行相当多操作,本文涉及的只是开发中常用的技能. 快速安装: yum -y install epel-release yum install -y ImageMagick ImageMagick-devel 格式转换: convert 1.png 1.jpg 缩放图像: convert 1.jpg -resize 499x 1.jpg 说明: ImageMa

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

zw版【转发&#183;台湾nvp系列Delphi例程】HALCON HImage与Bitmap格式转换

zw版[转发·台湾nvp系列Delphi例程]HALCON HImage与Bitmap格式转换 (Delphi Prism)namespace HImage_Bitmap_Prism;interfaceuses System.Drawing, System.Collections, System.Collections.Generic, System.Windows.Forms, System.ComponentModel, System.Drawing, System.Drawing.Imag

java GBK字符转换成为UTF-8编码字符

import java.util.HashMap; import java.util.Map; /** * 创建日期: 2014-04-18 10:36:25 * 作者: 黄飞 * mail:[email protected] [email protected] * ©版权归作者所有 * */ public class ConverFromGBKToUTF8 { public static void main(String[] args) { try { ConverFromGBKToUTF8