日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青青青视频在线 | 国产精品99久久久久久大便 | 毛片a片免费看 | youjizz韩国 | 国模吧一区二区三区 | 青青草免费在线 | 在线视频91| 软萌小仙自慰喷白浆 | 男人的天堂在线观看av | 在线看v片 | 亚洲操操操 | 国产精品美女毛片真酒店 | 专业操老外 | 欧美激情第1页 | 日韩午夜电影网 | 中国一级大黄大黄大色毛片 | 中文字幕第11页 | 成都电影免费大全 | 亚洲国产精品视频在线观看 | 你懂的在线观看网站 | 欧美亚洲图片小说 | 欧美激情一区在线 | 免费在线观看黄视频 | 国语对白做受按摩的注意事项 | 日日日视频 | 欧美精品一级二级 | 久久亚洲精品中文字幕 | 熟妇高潮一区二区高潮 | 日产精品久久久 | 国产精自产拍久久久久久蜜 | аⅴ天堂中文在线网 | 交专区videossex农村 | 亚洲精华国产精华精华液网站 | 免费观看一级一片 | 日本美女一区二区 | 一级在线视频 | 久久av红桃一区二区小说 | youjizz麻豆 | 在线不卡一区 | 欧美黄色片免费看 | 成人黄色激情网 | 国内特级毛片 | 色一情一乱一区二区三区 | 五月婷婷六月丁香综合 | 欧美性受视频 | 成人毛片100免费观看 | 免费成人黄色网址 | 日本一级淫片免费放 | 国产初高中真实精品视频 | 免费精品在线 | 亚洲 欧美 另类 综合 偷拍 | 伊人超碰在线 | 91插插视频| 精品久久久久久国产 | 国产精品久久久久久久久久 | 少妇免费毛片久久久久久久久 | 亚洲性自拍 | 波多野结衣在线免费视频 | 精品成人一区二区三区 | 一区二区三区激情视频 | 国产黄色三级 | 波多野结衣之双调教hd | 插插综合视频 | 国产精品日韩专区 | 日韩av线 | 巨物撞击尤物少妇呻吟 | 青青青青青操 | 特级西西www444人体聚色 | 午夜做爰xxxⅹ性高湖视频美国 | 韩国久久久久久 | 欧美暧暧视频 | 国产精品国产三级国产aⅴ中文 | 天堂√8在线中文 | 91麻豆精品一二三区在线 | 国产精品精品国产 | 亚洲精品视频久久久 | 中出一区 | a天堂在线观看视频 | 欧美日本久久 | 疯狂做受xxxx国产 | 美女精品在线观看 | 亚洲欧美另类日本 | 欧美日韩免费网站 | 男人久久天堂 | 野战少妇38p | 精品久久久久一区 | 国产一级爱c视频 | 黄污视频在线观看 | 国产精品久久在线 | 亚洲天堂五月天 | 日韩午夜激情 | 91精品国产日韩91久久久久久 | 女厕厕露p撒尿八个少妇 | 久久精品一二三 | 国产成人无码一区二区在线播放 | 人人爱人人搞 | www.黄色一片 | 二区三区在线视频 | 日韩精品一区二区在线观看 |