1. 程式人生 > >VC下unicode與utf-8互轉

VC下unicode與utf-8互轉

使用場合:

VC下使用unicode編碼,如果需要使用utf-8,這時就需要轉換(支援中文)

//引數:utf8  要轉換的utf8 指標

unicode接收轉換後的buff

nBuffSize buff的大小

返回值:轉換後的unicode大小

int Utf82Unicode(const char* utf, wchar_t* unicode, int nBuffSize)  
{  
	if(!utf || !strlen(utf))  
	{  
		return 0;  
	}  
	int dwUnicodeLen = MultiByteToWideChar(CP_UTF8,0,utf,-1,NULL,0);  
	size_t num = dwUnicodeLen*sizeof(wchar_t);  
	if (num > nBuffSize)
	{
		return 0;
	}
	MultiByteToWideChar(CP_UTF8, 0, utf, -1, unicode, dwUnicodeLen);   
	return dwUnicodeLen; 
}

//引數:unicode 要轉換的unicode指標

utf8 接收轉換後的buff

nBuffSize buff的大小

返回值:轉換utf8大小

int Unicode2Utf8(const wchar_t* unicode, char* utf8, int nBuffSize) 
{    
	if (!unicode || !wcslen(unicode))
	{
		return 0;
	}
	int len;    
	len = WideCharToMultiByte(CP_UTF8, 0, unicode, -1, NULL, 0, NULL, NULL); 
	if (len > nBuffSize)
	{
		return 0;
	}  
	WideCharToMultiByte(CP_UTF8, 0, unicode, -1, utf8, len, NULL,NULL);    
	return len;    
}


相關推薦

VCunicodeutf-8

使用場合: VC下使用unicode編碼,如果需要使用utf-8,這時就需要轉換(支援中文) //引數:utf8  要轉換的utf8 指標 unicode接收轉換後的buff nBuffSize buff的大小 返回值:轉換後的unicode大小 int Utf82U

UnicodeUTF-8(C語言實現)

1.1 ASCII碼 我們知道, 在計算機內部, 所有的資訊最終都表示為一個二進位制的字串. 每一個二進位制 位(bit)有0和1兩種狀態, 因此八個二進位制位就可以組合出 256種狀態, 這被稱為一個字 節(byte). 也就是說, 一個位元組一共可以用來表示256種不

IOS編碼GB2312UTF-8

GB2312轉換為UTF-8的方法 + (NSData *)UTF8WithGB2312Data:(NSData *)gb2312Data { NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding

在GBKUTF-8時遇到問題,及解決方案

當文字長度為奇數時轉為GBK再轉回UTF-8時會出現末尾字元亂碼的情況,在此特地記錄一下解決方案 最近在寫一個根據模板標籤生成word的專案,在本地測試無問題但是放到伺服器上會出現生成字元亂碼的情況, 考慮到GBK轉UTF-8使用getBytes只有在長度為

cocos2d-x類型轉換(CCstring int string char UTF-8)

htm for ons cocos2d oat form int str intvalue http://www.cnblogs.com/leehongee/p/3642308.html //int 轉 CCstring int num=5; CCString* n

unicodeutf-8

第一個 另存為 2個 平臺 pre -- 開始 方式 數字 1. ASCII碼 我們知道,在計算機內部,所有的信息最終都表示為一個二進制的字符串。每一個二進制位(bit)有0和1兩種狀態,因此八個二進制位就可以組合出256種狀態,這被稱為一個字節(byte)。也就是說,一個

字符編碼,ASCII、UnicodeUTF-8的理解

F5 標準化 一般來說 簡書 打開文件 說了 tps can 常用 首先我們先要明白的兩點是:1、計算機中的信息都是由二進制的0和1儲存的;2、我們再計算機屏幕上看到的各種字符都是計算機系統按照一定的規則將二進制數字轉換而來的。 一、基本概念。 1、字符集(charse

快速理解編碼,unicodeutf-8

logs 聯網 長度 unicode 為什麽 互聯網 什麽 描述 com 1.為什麽編碼,因為cpu只認識數字2.ASCII 一個字符共占7位,用一個字節表示,共128個字符3.那麽ASCII浪費了最高位多可惜,出現了ISO-8859-1,一個字節,256個字符,很多協議的

關於ANSI,unicodeutf-8的區別

關於ANSI,unicode與utf-8的區別 為使計算機支援更多語言,通常使用 0x80~0xFFFF 範圍的 2 個 位元組來表示 1 個字元。比如:漢字 '中' 在 ANSI編碼 中文作業系統中,使用 [0xD6

關於字元編碼:ascii、unicodeutf-8

轉自:https://foofish.net/unicode_utf-8.html   阮一峰老師對普及計算機基礎技術功不可沒,但畢竟老師不是神,因此也避免不了對某些概念有一些錯誤的理解,《字元編碼筆記:ASCII,Unicode 和 UTF-8 》 是阮老師10年前寫的一篇關於字元編

java劃線駝峰命名

方式一: 下劃線與駝峰命名轉換: public class Tool {

阮一峰老師文章的常識性錯誤之 Unicode UTF-8

阮一峰老師對普及計算機基礎技術功不可沒,但畢竟老師不是神,因此也避免不了對某些概念有一些錯誤的理解,《字元編碼筆記:ASCII,Unicode 和 UTF-8 》 是阮老師10年前寫的一篇關於字元編碼的科普文章,現在用 Google 搜關鍵字該文章依然名列前茅,可見他的文章有多大影響力,不過

c++中gbk和utf-8

gbk轉utf-8 char* G2U(const char* gb2312) { ASSERT(gb2312!=NULL); int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);

C++ 實現unicodeutf-8

思路: 獲取字串裡面中的Unicode部分,然後將該部分轉換位utf-8格式的字元,最後將字串裡面的所有Unicode替換為utf-8即可。 廢話不多少,直接上程式碼: 標頭檔案: /* * charsetEncode.h * * Created on: Jul

python3中的UNICODE UTF-8的簡單關係

一.字符集:asciiISO-8859-1 通常叫 做Latin-1,向下相容ASCII,此字符集支援部分於歐洲使用的語言GB2312/GBK 這就是漢字的國標碼,專門用來表示漢字,是雙位元組編碼,而英文字母和iso8859-1一致(相容iso8859-1編碼)。其中gbk編

c++碼基礎(1):各種編碼型別及unicode和uft-8

什麼是Ascii編碼? 單位元組編碼,適用於所有拉丁文字字母. ASCII 碼使用指定的7 位或8 位二進位制數組合來表示128 或256 種可能的字元. 標準ASCII 碼也叫基礎ASCII碼,使用7 位二進位制數(剩下的1位二進位制為0)來表示所有的大寫和小寫字母,數字

Python2.7 中文字元編碼 & Pycharm utf-8設定、Unicodeutf-8的區別

Python2.7 中文字元編碼 & Pycharm utf-8設定、Unicode與utf-8的區別 [email protected] 作者:Zhouwan  2017-6-6  一、關於編碼和亂碼,有以下幾個重要的概念需要搞清楚:     二、Pycharm 設定編碼, 可以

cocos2d-x型別轉換(CCstring int string char UTF-8)

====================================== string 轉 CCStringstd::string str = "123"; CCString* ns=CCString::createWithFormat("%s",str.c_str()); CCString 轉

GBK(GB2312)UTF-8檔案

最近使用的Intelij IDEA開發工具,轉碼有點小問題。百度了一下,Eclipse可以自動轉碼,而IDEA卻不可以。總是需要手動去轉若要把原始檔由GBK轉成UTF-8的,得靠其他方式了。網上搜羅了一下方法,然後自己整理了一下。現把程式碼貼出來,測試OK、可以直接使用!

.net的一個Bug:Int64Byte[8]的問題

有一個64位整數值:    Int64 n = 634636512000000000; 有兩種方法可以轉為位元組流 1:    byte[] buffer = new byte[8];    buffer[0] = (byte)n;    buffer[1] = (byt