真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

utf-8轉(zhuǎn)換函數(shù)c語言 c++轉(zhuǎn)utf8

如何將一個漢字用C語言將其轉(zhuǎn)換成Unicode編碼最好直接編成UTF-8,是不是vc里面有函數(shù)可以直接編?求程序

對,有。

10年積累的成都網(wǎng)站制作、成都做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有昌平免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

#define?_CONVERSION_USES_THREAD_LOCALE

#include?atlbase.h

#include?atlconv.h

#include?stdio.h

#include?string.h

int?main()

{

USES_CONVERSION;

_acp?=?CP_ACP;

char?buf[3]?=?{0};

buf[0]?=?getchar();

buf[1]?=?getchar();

wchar_t?tmpbuf[2]?=?{0};

tmpbuf[0]?=?A2W(buf)[0];

_acp?=?CP_UTF8;

char?utf8buf[4];

strcpy(utf8buf,?W2A(tmpbuf));

int?i?=?0;

while(utf8buf[i]?!=?0)

{

printf("%02x?",?(unsigned?char)utf8buf[i]);

++i;

}

return?0;

}

如果不是VC6.0而是新的VC的話是新的寫法。

你可以輸入一個日進(jìn)去看看

Objective-C如何把UTF-8字符串轉(zhuǎn)換為十六進(jìn)制數(shù)?用C語言函數(shù)也可以。

int strtohex(const char *ch)

{

int i=0, tmp, result=0;

for(i=0; istrlen(ch); i++) /* 把字符一個一個轉(zhuǎn)成16進(jìn)制數(shù) */

{

if((ch[i]='0')(ch[i]='9'))

tmp = ch[i]-'0';

else if((ch[i]='A')(ch[i]='F'))

tmp = ch[i]-'A'+10;

else if((ch[i]='a')(ch[i]='f'))

tmp = ch[i]-'a'+10;

else

return -1; /* 出錯了 */

result = result*16+tmp; /* 轉(zhuǎn)成16進(jìn)制數(shù)后加起來 */

}

return result;

}

字符串轉(zhuǎn)換為hex,我用的這個。

弱弱的問一句,C語言能不能實現(xiàn)字符串的編碼格式轉(zhuǎn)換 GB2312toUTF-8?

其實 linux 和 windows 的系統(tǒng)函數(shù)都是C函數(shù),并且提供了GB2312toUTF-8的函數(shù),所以C語言是可以實現(xiàn)轉(zhuǎn)碼的。以下是windows的例子:int num = ::MultiByteToWideChar(CP_ACP, 0, "你好", -1, NULL, 0);wchar_t* m_arrayShort = new wchar_t[num];::MultiByteToWideChar(CP_ACP, 0, "你好", -1, m_arrayShort, num); int len = ::WideCharToMultiByte (CP_UTF8, 0, (LPCWSTR)m_arrayShort, num, 0, 0, NULL, NULL);char *tmpPT = new char[len+1];::WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)m_arrayShort, num, tmpPT, len, NULL, NULL);tmpPT[len] = 0;

大神們,AIX下,如何用C實現(xiàn)UTF8的中文轉(zhuǎn)成ASCII

用MultiByteToWideChar和WideCharToMultiByte可以做到編碼的轉(zhuǎn)換。

MultiByteToWideChar是一個windows API 函數(shù),該函數(shù)映射一個字符串到一個寬字符(unicode)的字符串。

函數(shù)原型:int MultiByteToWideChar(UINT CodePage,DWORD dwFlags,LPCSTR lpMultiByteStr,int cchMultiByte,LPWSTR lpWideCharStr,int cchWideChar);

參數(shù):CodePage:指定執(zhí)行轉(zhuǎn)換的字符集,這個參數(shù)可以為系統(tǒng)已安裝或有效的任何字符集所給定的值。你也可以指定其為下面的任意一值:CP_ACP:ANSI字符集;CP_MACCP:Macintosh代碼頁;CP_OEMCP:OEM代碼頁;CP_SYMBOL:符號字符集(42);CP_THREAD_ACP:當(dāng)前線程ANSI代碼頁;CP_UTF7:使用UTF-7轉(zhuǎn)換;CP_UTF8:使用UTF-8轉(zhuǎn)換。dwFlags:一組位標(biāo)記用以指出是否未轉(zhuǎn)換成預(yù)作或?qū)捵址ㄈ艚M合形式存在),是否使用象形文字替代控制字符,以及如何處理無效字符。你可以指定下面是標(biāo)記常量的組合,含義如下:MB_PRECOMPOSED:通常使用預(yù)作字符——就是說,由一個基本字符和一個非空字符組成的字符只有一個單一的字符值。這是缺省的轉(zhuǎn)換選擇。不能與MB_COMPOSITE值一起使用。MB_COMPOSITE:通常使用組合字符——就是說,由一個基本字符和一個非空字符組成的字符分別有不同的字符值。不能與MB_PRECOMPOSED值一起使用。MB_ERR_INVALID_CHARS:如果函數(shù)遇到無效的輸入字符,它將運(yùn)行失敗,且GetLastErro返回ERROR_NO_UNICODE_TRANSLATION值。MB_USEGLYPHCHARS:使用象形文字替代控制字符。組合字符由一個基礎(chǔ)字符和一個非空字符構(gòu)成,每一個都有不同的字符值。每個預(yù)作字符都有單一的字符值給基礎(chǔ)/非空字符的組成。在字符è中,e就是基礎(chǔ)字符,而重音符標(biāo)記就是非空字符。函數(shù)的缺省動作是轉(zhuǎn)換成預(yù)作的形式。如果預(yù)作的形式不存在,函數(shù)將嘗試轉(zhuǎn)換成組合形式。標(biāo)記MB_PRECOMPOSED和MB_COMPOSITE是互斥的,而標(biāo)記MB_USEGLYPHCHARS和MB_ERR_INVALID_CHARS則不管其它標(biāo)記如何都可以設(shè)置。lpMultiByteStr:指向?qū)⒈晦D(zhuǎn)換字符串的字符。cchMultiByte:指定由參數(shù)lpMultiByteStr指向的字符串中字節(jié)的個數(shù)。如果lpMultiByteStr指定的字符串以空字符終止,可以設(shè)置為-1(如果字符串不是以空字符中止,設(shè)置為-1可能失敗,可能成功),此參數(shù)設(shè)置為0函數(shù)將失敗。lpWideCharStr:指向接收被轉(zhuǎn)換字符串的緩沖區(qū)。cchWideChar:指定由參數(shù)lpWideCharStr指向的緩沖區(qū)的寬字符個數(shù)。若此值為零,函數(shù)返回緩沖區(qū)所必需的寬字符數(shù),在這種情況下,lpWideCharStr中的緩沖區(qū)不被使用。

返回值:如果函數(shù)運(yùn)行成功,并且cchWideChar不為零,返回值是由lpWideCharStr指向的緩沖區(qū)中寫入的寬字符數(shù);如果函數(shù)運(yùn)行成功,并且cchWideChar為零,返回值是接收到待轉(zhuǎn)換字符串的緩沖區(qū)所需求的寬字符數(shù)大小。如果函數(shù)運(yùn)行失敗,返回值為零。若想獲得更多錯誤信息,請調(diào)用GetLastError函數(shù)。它可以返回下面所列錯誤代碼:ERROR_INSUFFICIENT_BUFFER;ERROR_INVALID_FLAGS;ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION。

WideCharToMultiByte,該函數(shù)映射一個unicode字符串到一個多字節(jié)字符串。函數(shù)原型:int WideCharToMultiByte(UINT CodePage, //指定執(zhí)行轉(zhuǎn)換的代碼頁DWORD dwFlags, //允許你進(jìn)行額外的控制,它會影響使用了讀音符號(比如重音)的字符LPCWSTR lpWideCharStr, //指定要轉(zhuǎn)換為寬字節(jié)字符串的緩沖區(qū)int cchWideChar, //指定由參數(shù)lpWideCharStr指向的緩沖區(qū)的字符個數(shù)LPSTR lpMultiByteStr, //指向接收被轉(zhuǎn)換字符串的緩沖區(qū)int cchMultiByte, //指定由參數(shù)lpMultiByteStr指向的緩沖區(qū)最大值LPCSTR lpDefaultChar, //遇到一個不能轉(zhuǎn)換的寬字符,函數(shù)便會使用pDefaultChar參數(shù)指向的字符LPBOOL pfUsedDefaultChar //至少有一個字符不能轉(zhuǎn)換為其多字節(jié)形式,函數(shù)就會把這個變量設(shè)為TRUE);參數(shù):CodePage:指定執(zhí)行轉(zhuǎn)換的代碼頁,這個參數(shù)可以為系統(tǒng)已安裝或有效的任何代碼頁所給定的值。你也可以指定其為下面的任意一值:CP_ACP:ANSI代碼頁;CP_MACCP:Macintosh代碼頁;CP_OEMCP:OEM代碼頁;CP_SYMBOL:符號代碼頁(42);CP_THREAD_ACP:當(dāng)前線程ANSI代碼頁;CP_UTF7:使用UTF-7轉(zhuǎn)換;CP_UTF8:使用UTF-8轉(zhuǎn)換返回值:如果函數(shù)運(yùn)行成功,并且cchMultiByte不為零,返回值是由 lpMultiByteStr指向的緩沖區(qū)中寫入的字節(jié)數(shù);如果函數(shù)運(yùn)行成功,并且cchMultiByte為零,返回值是接收到待轉(zhuǎn)換字符串的緩沖區(qū)所必需的字節(jié)數(shù)。如果函數(shù)運(yùn)行失敗,返回值為零。若想獲得更多錯誤信息,請調(diào)用GetLastError函數(shù)。它可以返回下面所列錯誤代碼:ERROR_INSUFFICIENT_BJFFER;ERROR_INVALID_FLAGS;ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION。注意:指針lpMultiByteStr和lpWideCharStr必須不一樣。如果一樣,函數(shù)將失敗,GetLastError將返回ERROR_INVALID_PARAMETER的值?!indows CE:不支持參數(shù)CodePage中的CP_UTF7和CP_UTF8的值,以及參數(shù)dwFlags中的WC_NO_BEST_FIT_CHARS值。

C語言下實現(xiàn)對字符串進(jìn)行utf-8格式的轉(zhuǎn)換

標(biāo)準(zhǔn)庫里沒有。但搜了一下網(wǎng)上應(yīng)該找到不少,比如這個:

std::string?iso_8859_1_to_utf8(std::string?str)

{

string?strOut;

for?(std::string::iterator?it?=?str.begin();?it?!=?str.end();?++it)

{

uint8_t?ch?=?*it;

if?(ch??0x80)?{

strOut.push_back(ch);

}

else?{

strOut.push_back(0xc0?|?ch??6);

strOut.push_back(0x80?|?(ch??0x3f));

}

}

return?strOut;

}

用C語言如何將UTF-8編碼的txt文件改成ANSI編碼的文件,非常感謝!

《C語言將UTF-8編碼的txt文件改成ANSI編碼》百度網(wǎng)盤免費(fèi)下載

鏈接:

提取碼: id61? ?

C語言將UTF-8編碼的txt文件改成ANSI編碼


名稱欄目:utf-8轉(zhuǎn)換函數(shù)c語言 c++轉(zhuǎn)utf8
網(wǎng)站網(wǎng)址:http://weahome.cn/article/hhdcpo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部