1. 程式人生 > >C++字元轉碼

C++字元轉碼

wchar_t* U8ToUnicode(char* szU8)
{
    //UTF8 to Unicode
    //由於中文直接複製過來會成亂碼,編譯器有時會報錯,故採用16進位制形式
    //char* szU8 = "abcd1234\xe4\xbd\xa0\xe6\x88\x91\xe4\xbb\x96\x00";
    //預轉換,得到所需空間的大小
    int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0);
    //分配空間要給'\0'留個空間,MultiByteToWideChar不會給'\0'空間
wchar_t* wszString = new wchar_t[wcsLen + 1]; //轉換 ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen); //最後加上'\0' wszString[wcsLen] = '\0'; return wszString; } char* UnicodeToU8(wchar_t* szUnicode) { // unicode to UTF8 //wchar_t* wszString = L"abcd1234你我他";
//預轉換,得到所需空間的大小,這次用的函式和上面名字相反 int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL, szUnicode, wcslen(szUnicode), NULL, 0, NULL, NULL); //同上,分配空間要給'\0'留個空間 //UTF8雖然是Unicode的壓縮形式,但也是多位元組字串,所以可以以char的形式儲存 char* szU8 = new char[u8Len + 1]; //轉換 //unicode版對應的strlen是wcslen ::WideCharToMultiByte(CP_UTF8, NULL, szUnicode, wcslen(szUnicode), szU8, u8Len, NULL, NULL);
//最後加上'\0' szU8[u8Len] = '\0'; return szU8; } char* UnicodeToAnsi(wchar_t* szUnicode) { // unicode to ansi //wchar_t* wszString = L"abcd1234你我他"; //預轉換,得到所需空間的大小,這次用的函式和上面名字相反 int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, szUnicode, wcslen(szUnicode), NULL, 0, NULL, NULL); //同上,分配空間要給'\0'留個空間 char* szAnsi = new char[ansiLen + 1]; //轉換 //unicode版對應的strlen是wcslen ::WideCharToMultiByte(CP_ACP, NULL, szUnicode, wcslen(szUnicode), szAnsi, ansiLen, NULL, NULL); //最後加上'\0' szAnsi[ansiLen] = '\0'; return szAnsi; } wchar_t* AnsiToUnicode(char* szAnsi) { // ansi to unicode //char* szAnsi = "abcd1234你我他"; //預轉換,得到所需空間的大小 int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, 0); //分配空間要給'\0'留個空間,MultiByteToWideChar不會給'\0'空間 wchar_t* wszString = new wchar_t[wcsLen + 1]; //轉換 ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen); //最後加上'\0' wszString[wcsLen] = '\0'; return wszString; }

相關推薦

C++字元

wchar_t* U8ToUnicode(char* szU8) { //UTF8 to Unicode //由於中文直接複製過來會成亂碼,編譯器有時會報錯,故採用16進位制形式 //char* szU8 = "abcd1234\xe4\xbd\xa0

字元開源庫libiconv目前還不支援64位

最新版的libiconv 1.14目前還不支援64位系統,只能編譯出32位庫。libiconv 1.14下載地址:libiconv介紹:linux系統編譯安裝方法:$ ./configure --prefix=/usr/local $ make $ make install執

python 字元

encode和decode python中做字元轉碼時,通常要用unicode作為中間碼 encode是將Unicode轉為其他碼。如 str1.encode('gb2312') decode是將其他碼轉為unicode,如 str2.decode('gb2312') 轉

java的字元;eclipse設定UTF-8

把字符集中的字元 編碼為指定集合中某一物件(例如:位元模式、自然數序列、8位組或者電脈衝),以便文字在計算機中儲存和通過通訊網路的傳遞。 不同國家、不同計算機系統編碼方式不同; 中國大陸:GBK (規定檔案為GB13000) Unicode

%特殊字元解碼異常解決方案

JS加碼encodeURI(str) JS解碼decodeURI(str) JAVA解碼URLDecoder.decode(str, "UTF-8"); 摘要:Exception in thread main java.lang.IllegalArgumentExce

請求Http時可能因為字元問題導致錯誤的特殊字元

url轉換問題 String url = baseUrl + "?" + "name=" + name + "&age=" + age;     url = url.replaceAll(

在js中對中文和特殊字元,js(轉載)

js對文字進行編碼涉及3個函式:escape,encodeURI,encodeURIComponent,相應3個解碼函式:unescape,decodeURI,decodeURIComponent1、   傳遞引數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字元截斷。   

java:string2hexString 中文字元問題解決

java 中提供了一些字串轉碼的工具類,比如:Base64,UrlEncoder & UrlDecoder。但是這些類,真的非常有侷限性,轉碼之後的字串,往往不能被當成檔案路徑識別。 於是將 字串轉成16進位制的字串就顯得非常有必要了。因為16進位制的

java字元

java虛擬機器預設的編碼是unicode指的是記憶體中的編碼是unicode,而進行io(包括網路和硬碟)傳輸時另外編碼,通過 System.getProperty("file.encoding")檢視,通常,預設為ansi,不過通過eclipse可以配置為其他編碼

python字元問題-持續更新

1.往excel表中寫中文: 加u 或者unicode("阿薩德","utf-8") 2.程式碼前一般加# -*- coding:utf-8 -*- 3.從web上獲取的字元中特殊符號如果轉碼錯誤可

HTML字元

HTML特殊字元的編碼表: 標記 編碼 實際名稱 ™ ™ € € Space     ! ! "

在js中對中文和特殊字元,js

js對文字進行編碼涉及3個函式:escape,encodeURI,encodeURIComponent,相應3個解碼函式:unescape,decodeURI,decodeURIComponent1、   傳遞引數時需要使用encodeURIComponent,這樣組合的u

C++實現ASCII字元陣列16進位制字元陣列的功能

    在網路通訊中經常用到16進位制字元陣列和ASCII碼字元陣列互相轉換的功能,雖然功能簡單,但初學者寫出來的程式碼經常會有各種問題。從ASCII碼字元陣列轉為16進位制字元陣列,一個判斷比較完整的實現程式碼如下: bool AsciiToHex( char * Des

C++ Builder 源:TTS 文字語音,可以朗讀文字,或者把文字轉為 wav 聲音文件

源碼 img 操作 sde lan 語音 skill http sta TTSDemo / TVictorTTS: 兼容 C++ Builder 2010 ~ C++ Builder 10 (CX) 版本 ? 包括 Win32 和 Win64 兩個版本。兼容的操作系統:W

MVC的view頁面內嵌C#語法發現路徑被的解決方法

ima str htm com view col .com img ole 一,上視圖代碼,如下 console.log(‘@urlquery.ToString()‘); console.log(‘@Html.Raw(urlquery.ToString())‘); 二,

C# 使用 ffmpeg 進行音訊

先放一下 ffmpeg 的官方文件以及下載地址: 官方文件:http://ffmpeg.org/ffmpeg.html 下載地址:http://ffmpeg.org/download.html 用 ffmpeg 進行轉碼很簡單,全部都用預設引數的話用下面這句就行: ff

關於字元的編碼和URLEncode URLDecode

 URLEncode方法是把任何我們給出的引數轉換成適合放在URL中的字串。具體規則:       1。字母,數字,連字元不變。       2。空格轉換成加號。       3。其他所有的字元

c# 數字成千分位字串 C# 數字帶逗號(千分位符、金錢千分位字元

C# 數字帶逗號(千分位符、金錢千分位字元)   首先要明確帶了逗號之後  數字就變成字串了 ,不再是數字了。 昨天做專案的時候需要格式化數字變成帶逗號的,本來打算自己寫個方法的,後來時間太緊了,就打算從網上查個,查來查去都是要對字串的位進行操作,選

C/C++.【】解析URL的轉義字元百分比(%)字串

1、來自:[HTTP]_[C_C++]_[解析URL的轉義字元百分比字串] - 豬一戒 - 部落格園.html(http://www.cnblogs.com/zhuyijie/p/6465303.html) 2、使用環境:我在 使用 libxml2的時候,遇到 檔案編碼不對,它在報錯輸出檔名的時候 如果檔名

C# 輸入字元十六進位制字元

private string StringToHexString(string s, Encoding encode) { byte[] b = encode.GetBytes(s);//按照指定編碼將string程式設計位元組陣列