c語言u(píng)tf8編碼函數(shù),中文轉(zhuǎn)utf8編碼 c語言

如何使用C語言將漢字轉(zhuǎn)換成UTF8編碼,如將“你好”轉(zhuǎn)成:%E4%BD%A0%E5%A5%

你說的好像是不對(duì)。這是把a(bǔ)scii馬用16進(jìn)制表示。并不是utf8,我不知道你要干什么,不過我猜你做的是web應(yīng)用,需要把特殊字符轉(zhuǎn)化成%16進(jìn)制格式,如果你的系統(tǒng)真是utf8的話,我想你應(yīng)該這么做

成都創(chuàng)新互聯(lián)公司2013年成立,公司自成立以來始終致力于為企業(yè)提供官網(wǎng)建設(shè)、移動(dòng)互聯(lián)網(wǎng)業(yè)務(wù)開發(fā)(小程序制作、手機(jī)網(wǎng)站建設(shè)、成都app軟件開發(fā)公司等),并且包含互聯(lián)網(wǎng)基礎(chǔ)服務(wù)(域名、主機(jī)服務(wù)、企業(yè)郵箱、網(wǎng)絡(luò)營(yíng)銷等)應(yīng)用服務(wù);以先進(jìn)完善的建站體系及不斷開拓創(chuàng)新的精神理念,幫助企業(yè)客戶實(shí)現(xiàn)互聯(lián)網(wǎng)業(yè)務(wù),嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過硬的技術(shù)實(shí)力獲得客戶的一致贊譽(yù)。

用iconv_open和iconv,先把字符串變成utf-8。然后在把這個(gè)串中的每個(gè)字節(jié)都變成16進(jìn)制加%的格式。

如果你只是需要16進(jìn)制轉(zhuǎn)換,那就簡(jiǎn)單了。把沒有字符的ascii拿出來,sprintf(%02x)成16進(jìn)制,在合起來就成。

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

#includestdio.h?

#includewindows.h?

void?GetUtf8(unsigned?short?uni)??

{??

unsigned?char?utf_8[3];??

utf_8[0]=(0xe4)?|?((uni??0xf000)12);//相當(dāng)于把二進(jìn)制1110右移12位??

utf_8[1]=(0x26)?|?((uni??0x0fc0)6);?//相當(dāng)于把二進(jìn)制10右移16位??

utf_8[2]=(0x26)?|?(uni??0x003f);??????//相當(dāng)于取二進(jìn)制低6位??

printf("UTF-8編碼的第一個(gè)字節(jié)為0x%.2x\n",utf_8[0]);??

printf("UTF-8編碼的第一個(gè)字節(jié)為0x%.2x\n",utf_8[1]);??

printf("UTF-8編碼的第一個(gè)字節(jié)為0x%.2x\n",utf_8[2]);??

}??

void?main()??

{??

char?a[3];

wchar_t?str;

printf("輸入一個(gè)漢字:\n");

gets(a);

MultiByteToWideChar(CP_ACP,?0,?a,?-1,?str,?1);

printf("%s",?a);

printf("字Unicode編碼為%x\n",(unsigned?short)str);??

GetUtf8((unsigned?short)str);

}

c++ 如何轉(zhuǎn)換UTF8編碼??

普通sting類型 轉(zhuǎn)UTF-8編碼格式字符串std::string ofDewarServer::string_To_UTF8(const std::string str)

{

int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0);

wchar_t * pwBuf = new wchar_t[nwLen + 1];//一定要加1,不然會(huì)出現(xiàn)尾巴

ZeroMemory(pwBuf, nwLen * 2 + 2);

::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), pwBuf, nwLen);

int nLen = ::WideCharToMultiByte(CP_UTF8, 0, pwBuf, -1, NULL, NULL, NULL, NULL);

char * pBuf = new char[nLen + 1];

ZeroMemory(pBuf, nLen + 1);

::WideCharToMultiByte(CP_UTF8, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);

std::string retStr(pBuf);

delete []pwBuf;

delete []pBuf;

pwBuf = NULL;

pBuf = NULL;

return retStr;

}

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

其實(shí) linux 和 windows 的系統(tǒng)函數(shù)都是C函數(shù),并且提供了GB2312toUTF-8的函數(shù),所以C語言是可以實(shí)現(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;

C語言如何生成UTF-8編碼格式的文件

哎呀。都是干嘛的???很簡(jiǎn)單的啊。

你用二進(jìn)制的方式寫文件,不就行了啊。

寫文件的時(shí)候,把要寫入的數(shù)據(jù),用一個(gè)函數(shù)轉(zhuǎn)換程utf8編碼的數(shù)據(jù),就ok了啊

雖然我沒在linux下編過,但每個(gè)系統(tǒng),每個(gè)開發(fā)環(huán)境,肯定提供了

編碼轉(zhuǎn)換的函數(shù)庫

的啊

網(wǎng)站標(biāo)題:c語言u(píng)tf8編碼函數(shù),中文轉(zhuǎn)utf8編碼 c語言
當(dāng)前URL:http://www.muchs.cn/article2/hcppic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、建站公司、小程序開發(fā)、域名注冊(cè)網(wǎng)站維護(hù)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)