日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

utf-8编码的字符串转成unicode(ucs-4)编码的字符串

發(fā)布時(shí)間:2024/2/28 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 utf-8编码的字符串转成unicode(ucs-4)编码的字符串 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本人第一篇原創(chuàng)博客,盡力把代碼注釋清楚,如有錯(cuò)誤之處,敬請(qǐng)指出


typedef unsigned int mfchar_t;// 無(wú)符號(hào)的4字節(jié),用于容納UCS-4的一個(gè)字符 typedef std::basic_string<mfchar_t> mfstring;// 自定義的UCS-4字符串// 把utf-8編碼的字符串轉(zhuǎn)換成UCS-4編碼的字符串 void DB_Mofify_Handler::utf8ToWS(const string& src, mfstring& dest) {mfchar_t w = 0;mfchar_t err = '?';// 表轉(zhuǎn)碼錯(cuò)誤int bytes = 0; // 表剩余要處理的字節(jié)數(shù)for (size_t i = 0; i < src.length(); i++){unsigned char c = (unsigned char)src[i];if (c <= 0x7f) // <= 0x0111 1111(即127)的說(shuō)明是ascii碼{// 若bytes不為0,說(shuō)明出錯(cuò),因?yàn)閍scii碼的utf-8編碼只占一個(gè)字節(jié)if (bytes){dest.push_back(err); bytes = 0;}// 將字符壓入隊(duì)列dest.push_back((mfchar_t)c);}else if (c <= 0xbf) // <= 0x1011 1111,說(shuō)明是多字節(jié)的utf-8編碼的第2,3,4,5,6字節(jié){// 既然是2,3,4,5,6字節(jié),bytes必不為0,否則出錯(cuò)if (bytes){// 取出c的后六位,將w左移6位,做或預(yù)算,賦值給w,這樣w就融合了c的后6位w = ( (w << 6) | (c & 0x3f) );// 字節(jié)數(shù)減1,因?yàn)楸咀止?jié)已經(jīng)融合完畢bytes--;// 若后面沒(méi)有字節(jié)數(shù)了,說(shuō)明字節(jié)數(shù)融合完畢,成為一個(gè)完整的ucs-4的字符了,壓入隊(duì)列if (bytes == 0){dest.push_back(w);}}else{dest.push_back(err); // 出錯(cuò)}}else if (c <= 0xdf) // <= 0x1101 1111,說(shuō)明是2字節(jié)的utf-8編碼的第一個(gè)字節(jié){bytes = 1; // 標(biāo)記后面還有1個(gè)字節(jié),下面類似w = c & 0x1f; // 取出后5位,注意是賦值操作,所以w的高位都將賦值為0。然后將 w 與后面字節(jié)的后六位融合即可,下面類似}else if (c <= 0xef) // <= 0x1110 1111,說(shuō)明是3字節(jié)的utf-8編碼的第一個(gè)字節(jié){bytes = 2; w = c & 0x0f; // 取出后4位}else if (c <= 0xf7) // <= 0x1111 0111,說(shuō)明是4字節(jié)的utf-8編碼的第一個(gè)字節(jié){bytes = 3; w = c & 0x07; // 取出后3位}else if (c <= 0xfb) // <= 0x1111 1011,說(shuō)明是5字節(jié)的utf-8編碼的第一個(gè)字節(jié){bytes = 4;w = c & 0x03; // 取出后2位}else if (c <= 0xfd) // <= 0x1111 1101,說(shuō)明是6字節(jié)的utf-8編碼的第一個(gè)字節(jié){bytes = 5;w = c & 0x01; // 取出后1位}else // > 0x1111 1101的是出錯(cuò),因utf-8最多6個(gè)字節(jié){dest.push_back(err);bytes = 0;}}if (bytes) {dest.push_back(err);} }



總結(jié)

以上是生活随笔為你收集整理的utf-8编码的字符串转成unicode(ucs-4)编码的字符串的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天堂av在线中文 | 又黄又爽的视频在线观看 | 稀缺呦国内精品呦 | 啪免费| 依依成人在线视频 | 国产麻豆一区二区三区在线观看 | 777片理伦片在线观看 | 大尺度舌吻呻吟声 | 中文字幕免费高清视频 | 久久97人妻无码一区二区三区 | 亚洲淫片 | 日本免费一区二区三区视频 | 国产男女自拍 | 国产精品自拍在线观看 | 色哟哟入口国产精品 | 精品久久久久国产 | 综合激情四射 | 九色91视频 | 久久精品丝袜高跟鞋 | 日韩在线一级片 | 91网站免费在线观看 | 97国产精品久久 | 又粗又大又硬又长又爽 | 亚洲AV无码国产精品午夜字幕 | 亚洲精品电影在线观看 | 日韩 欧美 国产 综合 | 日日夜夜人人 | 偷偷久久 | 麻豆免费在线观看视频 | 探花av在线| 国产麻豆剧传媒精品国产 | 国产伦精品一区二区三区视频网站 | 免费www xxx| 国产美女操 | 在线中文字幕网站 | 亚洲天堂性 | 52av在线| 美女131爽爽爽做爰视频 | 一区成人 | 日韩欧美中出 | 国产黄a三级三级三级看三级男男 | 高h喷水荡肉少妇爽多p视频 | 午夜av网址 | 成人免费在线观看av | 99精品久久久 | 人妻丰满熟妇av无码区免 | 理论黄色片 | aaa黄色片 | 成人在线视频免费看 | 好看的国产精品 | 人人射人人射 | 国产一区免费看 | 日本一区二区三区免费电影 | 老司机激情视频 | 欧美videos另类极品 | 中文 欧美 日韩 | 一本到视频 | 色香影院| 淫视频网站 | 亚洲色图欧美激情 | 亚洲欧洲在线看 | 最近中文字幕在线中文高清版 | 久久九九精品视频 | 国产免费久久 | 国产精品主播一区二区 | 国产精品成人一区二区 | 超碰pron| 三级做爰在线观看视频 | 成人淫片 | 亚洲精品精品 | 不卡的免费av | 亚洲精品美女视频 | 免费小视频在线观看 | 日韩精品黄 | 一本色道久久综合无码人妻 | 亚洲一区国产精品 | 人人妻人人澡人人爽欧美一区 | 五月激情五月婷婷 | 成人一级影片 | 97欧美| 97黄色片 | 精品国产91久久久久久久妲己 | 午夜影院免费视频 | 欧美做爰全过程免费观看 | 亚洲国产精品毛片 | 日本黄网免费 | 欧美日韩综合 | 欧美少妇b | 亚洲精品20p | 日韩久久精品一区二区 | 亚洲最大成人在线视频 | 91免费网站视频 | 嫩模被强到高潮呻吟不断 | 啪啪免费网 | 91在线播放视频 | 激情视频一区 | 日韩特级 | 欧美亚洲激情视频 | 久久无码性爱视频 |