1. 程式人生 > >UTF-8到GB2312相互轉化

UTF-8到GB2312相互轉化

來源:http://bbs.csdn.net/topics/340120536
//UTF-8到GB2312的轉換
char* U2G(const char* utf8)
{
int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len+1];
memset(wstr, 0, len+1);
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len);
len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len+1];
memset(str, 0, len+1);
WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);
if(wstr) delete[] wstr;
return str;
}


//GB2312到UTF-8的轉換
char* G2U(const char* gb2312)
{
int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len+1];
memset(wstr, 0, len+1);
MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);
len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL);
char* str = new char[len+1];
memset(str, 0, len+1);
WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL);
if(wstr) delete[] wstr;
return str;
}

無論是GB2312到UTF-8的轉換,還是UTF-8到GB2312的轉換,都需要注意的是在使用字串後,需要刪除字串指標;這是因為以上兩個方法返回的是字串指標,如果沒有刪除將會記憶體洩漏,可別說我沒提醒你哦。

相關推薦

python 字符串編碼 str和unicode 區別以及相互轉化 decode('utf-8') encode('utf-8')

encode unicode 字符串 code com bubuko src 區別 分享圖片 python 字符串編碼 str和unicode 區別以及相互轉化 decode('utf-8') encode('utf-8'

VC下utf-8 ansii相互轉化

轉自:http://blog.sina.com.cn/s/blog_81084a3a01014srq.html healer_kxinline std::string KS_UTF8_to_ANSI (const char* szUTF8) { if (szUTF8

幾個多位元組和UNICODE及UTF-8之間相互轉化的函式

做vc++開發免不了多位元組UNICODE、UTF-8轉來轉去,下面貼出我寫的幾個字元轉化函式  1、 TCHAR  和CHAR轉化, TCHAR 對應UNICODE和多位元組下分別是WCHAR 和CHAR 函式如下:   需要注意*dest是new出來的需要釋放 /

UTF-8到GB2312相互轉化

來源:http://bbs.csdn.net/topics/340120536//UTF-8到GB2312的轉換 char* U2G(const char* utf8) { int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1

C# UTF-8與GB2312編碼的相互轉化

1、首先引入名稱空間:using System.Text; 2、 GB2312轉化為UTF-8: string LanChange(string str) { Encoding utf8; Encoding gb2312;

linux中常用時間和字符串之間相互轉化

時間函數 spa lin cell form time函數 地理 -1 名稱 在Linux中經常會遇到時間和字符串相互轉化的情形,有兩個函數專門對應相應的轉化。 1、時間轉字符串函數strftime 函數原型:size_t strftime(char *s,size_t m

java.util.Date和java.sql.Date的區別和相互轉化(轉)

分開 hid 包含 strong stat 日常 互轉 timestamp edate 轉自:http://blog.csdn.net/qin_zhimou/article/details/55509769 共同點:都有getTime方法返回毫秒數,可以直接構建 不同點:

Java時間戳(long)與時間(String)的相互轉化

方法 ext nbsp bsp 等等 java blog pre 轉化 本文用到四個類: Long;//長整形,java用此類型作時間戳 java.text.SimpleDateFormat;//簡單時間格式,用作格式輸出 String;//字符串 java.uti

NSString 與 Class/Protocol/SEL 相互轉化

ont comm 類名 div nsarray mstr csdn gis nco //NSString 與 Class 相互轉化 Class NSClassFromString (NSString *aClassName); NSString * NSStringFr

json與(Object/List/Map)的相互轉化

json object list mep 在做web應用時,經常需要將json轉化成Object/list/map或者將Object/List/map轉化成json,通過簡單封裝可以在寫代碼是減輕很多負擔。本文將給出json轉化的一系列方法。 閑話不 多說,直接上代碼:先是Object /Li

POI操作word和html相互轉化

image com 文件 ali cto gpa jar包 nsf fun 下面是裏兩個類:第一個類是html轉為word,第二個是word轉html(最下面附上jar包下載鏈接) package com.wz.poi.wordHtml; /** * 2018/4/24 *

Javascript學習筆記-數據類型相互轉化

數據類型轉化註意事項 : string() number() 必需要大寫Javascript學習筆記-數據類型相互轉化

圖片和字符串相互轉化

span class enc tst 寫入 package ring print try 功能的實現應用到了java io 以下是代碼實現: package myProject; import java.io.BufferedInputStream; import ja

json字符串和json對象的相互轉化

gif obj color java span type code 常用 json 開發經常要用到json字符串和json對象的相互轉化,這裏總結常用的兩個函數。JSON.parse(‘字符串‘),JSON.stringify(‘json對象‘) 1 <scrip

字符與Ascii值和數字三者的相互轉化

int 轉化 har asc char digi git 互轉 整型 字符 -> Ascii值:char c = ‘a ‘;byte b =(byte)c;或 int i = c; Ascii值 -> 字符:int d = 97 ; char c = (

【轉】ORACLE中時間類型date和timestamp的相互轉化

數據類型 span 時間類型 mes 常用 tro 1.5 cnblogs 的區別 來源:http://www.cnblogs.com/java-class/p/4742740.html date和timestamp 的區別 date類型是Oracle常用的日

Java Bean與Map之間相互轉化的實現

涵蓋 ffffff ger 動態性 ring eth 名稱 分享圖片 tro 目錄樹概述Apache BeanUtils將Bean轉MapApache BeanUtils將Map轉Bean理解BeanUtils將Bean轉Map的實現之手寫Bean轉Map 概述  Apac

MYSQL時間戳和一般時間格式相互轉化

原文地址:【http://www.2cto.com/database/201208/145029.html】 1、UNIX_TIMESTAMP(date) UNIX_TIMESTAMP(date)   如果沒有引數呼叫,返回一個Unix時間戳記(從'1970-01-01 00:00

java 字串與字元陣列相互轉化,字串與位元組陣列相互轉化

package com.liuxd; /** * Created by Liuxd on 2018-11-02. */ public class TestString { public static void main(String[] args) throws Exception

OpenCV Java 問題記錄 - Mat型別和BufferedImage型別的相互轉化

將Mat型別轉化成BufferedImage型別 /** * 將Mat型別轉化成BufferedImage型別 *  * @param amatrix Mat物件 * @param fileExtension 副檔名 * @return */ public static Buffere