青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

GBK, UCS和UTF8相互轉(zhuǎn)換

最近學(xué)習(xí)了下編碼

以下地址可以很好的學(xué)習(xí)到相關(guān)的知識(shí)

http://dev.csdn.net/develop/article/69/69883.shtm

http://dev.csdn.net/develop/article/72/72888.shtm

其中講了UTF8的編碼

當(dāng)要表示的內(nèi)容是 7位 的時(shí)候就用一個(gè)字節(jié):0*******  第一個(gè)0為標(biāo)志位,剩下的空間正好可以表示ASCII 0127 的內(nèi)容。
  當(dāng)要表示的內(nèi)容在 8 到 11 位的時(shí)候就用兩個(gè)字節(jié):110***** 10******  第一個(gè)字節(jié)的110和第二個(gè)字節(jié)的10為標(biāo)志位。
  當(dāng)要表示的內(nèi)容在 12 到 16 位的時(shí)候就用三個(gè)字節(jié):1110***** 10****** 10******    和上面一樣,第一個(gè)字節(jié)的1110和第二、三個(gè)字節(jié)的10都是標(biāo)志位,剩下的空間正好可以表示漢字。
  以此類推:
四個(gè)字節(jié):11110**** 10****** 10****** 10******
  五個(gè)字節(jié):111110*** 10****** 10****** 10****** 10******
  六個(gè)字節(jié):1111110** 10****** 10****** 10****** 10****** 10******
  .............................................

我自己寫了轉(zhuǎn)換的代碼如下

UCSUTF8相互轉(zhuǎn)換

int UCS2UTF8(wchar_t* pUCS,unsigned char* pUTF8)
{
int UCSlen = 0, UTF8len = 0, i;
unsigned char* pTempUTF8 = NULL;
UCSlen = wcslen(pUCS);

if(pUCS == NULL || pUTF8 == NULL)
  return -1;
 
pTempUTF8 = pUTF8;
for(i = 0; i < UCSlen; i++)
{
  if(pUCS[i] <= 0x007F)//1 byte 0xxxxxxx
  {
   *(pTempUTF8++) = LOBYTE(pUCS[i]);
   UTF8len++;
  }
  else if(pUCS[i] <=0x07FF)//2 bytes 110xxxxx 10xxxxxx
  {
   *(pTempUTF8++) = HIBYTE(pUCS[i] << 2) & 0x3F | 0xC0;
   *(pTempUTF8++) = LOBYTE(pUCS[i] & 0x3f) | 0x80;
   UTF8len += 2;
  }
  else//3 bytes 1110xxxx 10xxxxxx 10xxxxxx
  {
   *(pTempUTF8++) = HIBYTE(pUCS[i] >> 4) | 0xe0;
   *(pTempUTF8++) = HIBYTE(pUCS[i] << 2) & 0x3F | 0x80;
   *(pTempUTF8++) = LOBYTE(pUCS[i]) & 0x3F | 0x80;
   UTF8len += 3;
  }
}
 
return UTF8len;
}
int UTF82UCS(unsigned char *pUTF8, wchar_t *pUCS)
{
int UCSlen = 0, i;
unsigned char *pTempUCS = NULL;
unsigned char *pTempUTF8 = NULL;

if(pUCS == NULL || pUTF8 == NULL)
  return -1;
UCSlen = MultiByteToWideChar(CP_UTF8,0,pUTF8,-1,NULL,0);
UCSlen--;
pTempUCS = (char*)pUCS;
pTempUTF8 = pUTF8;
for(i = 0; i < UCSlen; i++)
{
  if((*pTempUTF8) <= 0x7F)  //1 byte
  {
   *(pTempUCS + 1) = 0x00;
   *pTempUCS = *(pTempUTF8++);
   pTempUCS += 2;
  }
  else if((*pTempUTF8) >= 0xC0 && (*pTempUTF8) <= 0xDF)//2 bytes
  {
   *(pTempUCS + 1) = ((*pTempUTF8) >> 2) & 0x07;
   *pTempUCS = ((*pTempUTF8) << 6) | (*(pTempUTF8 + 1) & 0x3F);
   pTempUTF8 += 2;
   pTempUCS += 2;
  }
  else//3 bytes
  {
   *(pTempUCS + 1) = ((*pTempUTF8) << 4) | ((*(pTempUTF8 + 1) >> 2) & 0x0F);
   pTempUTF8++;
   *pTempUCS = ((*pTempUTF8) << 6) | (*(pTempUTF8+1) & 0x3F);
   pTempUTF8 += 2;
   pTempUCS += 2;
  }
}
return UCSlen;
}

其他編碼和UCS轉(zhuǎn)換

int ToUCS(unsigned char *p,wchar_t* pUCS,int codepage)
{
int len = 0;

if(pUCS == NULL || p == NULL)
  return -1;
len = MultiByteToWideChar(codepage,0,p,-1,NULL,0);
MultiByteToWideChar(codepage,0,p,-1,pUCS,len);
return len;
}

int UCSTo(wchar_t* pUCS,char *p,int codepage)
{
int len = 0;
 
if(pUCS == NULL || pBIG5 == NULL)
  return -1;

len = WideCharToMultiByte(codepage,0,pUCS,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(codepage,0,pUCS,-1,p,len,NULL,NULL);
len--;
return len;
}

這里的codepageMSDN定義如下

Bit

Code page

Description

ANSI

 

 

0

1252

Latin 1

1

1250

Latin 2: Eastern Europe

2

1251

Cyrillic

3

1253

Greek

4

1254

Turkish

5

1255

Hebrew

6

1256

Arabic

7

1257

Baltic

8

1258

VietNam

9 - 15

 

Reserved for ANSI

ANSI and
OEM

 

 

16

874

Thai

17

932

Japanese, Shift-JIS

18

936

Chinese: Simplified chars—PRC and Singapore

19

949

Korean Unified Hangeul Code (Hangeul TongHabHyung Code)

20

950

Chinese: Traditional chars—Hong Kong SAR, PRC and Taiwan

21

1361

Korean (Johab)

22 - 29

 

Reserved for alternate ANSI and OEM

30 - 31

 

Reserved by system.

OEM

 

 

32 - 46

 

Reserved for OEM

47

1258

VietNam

48

869

IBM Greek

49

866

MS-DOS Russian

50

865

MS-DOS Nordic

51

864

Arabic

52

863

MS-DOS Canadian French

53

862

Hebrew

54

861

MS-DOS Icelandic

55

860

MS-DOS Portuguese

56

857

IBM Turkish

57

855

IBM Cyrillic; primarily Russian

58

852

Latin 2

59

775

Baltic

60

737

Greek; former 437 G

61

708

Arabic; ASMO 708

62

850

Western European/Latin 1

63

437

US

 

posted on 2009-09-10 23:13 肥仔 閱讀(2056) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 字符編碼

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            黑人一区二区三区四区五区| 国产一区欧美| 性做久久久久久| 免费高清在线视频一区·| 国产精品国产| 午夜精品一区二区三区在线| 91久久黄色| 久久久不卡网国产精品一区| 国产精品视频久久久| 亚洲精品日韩激情在线电影| 久久久久久69| 久久久久免费视频| 噜噜爱69成人精品| 一本色道久久精品| 欧美成人午夜免费视在线看片| 一本色道精品久久一区二区三区| 亚洲在线一区| 亚洲欧美怡红院| 国产精品亚洲一区| 久久蜜桃精品| 国产一区二区高清不卡| 久久国产手机看片| 久久精品在线观看| 久久丁香综合五月国产三级网站| 日韩视频一区二区三区在线播放免费观看 | 一区二区三区日韩精品视频| 欧美精品在线免费| 国产精品嫩草99a| 久久久久久九九九九| 免费日韩一区二区| 亚洲一级二级在线| 久久久人成影片一区二区三区观看| 在线观看一区二区视频| 亚洲综合不卡| 一区二区三区在线观看视频| 亚洲影视综合| 国产一区二区三区四区| 欧美激情成人在线视频| 亚洲欧美日韩一区在线| 亚洲亚洲精品在线观看| 你懂的视频一区二区| 欧美a级大片| 亚洲国产成人久久综合| 欧美日韩一区二区三区免费 | 亚洲一区二区三区午夜| 亚洲麻豆av| 亚洲精品乱码久久久久久蜜桃91| 午夜视黄欧洲亚洲| 亚洲三级国产| 久久麻豆一区二区| 久久夜色精品一区| 狼人天天伊人久久| 国产欧美短视频| 亚洲欧美在线一区| 久久久久久久综合色一本| 久久久一区二区| 一本大道久久a久久精品综合| 久久久久成人精品| 蜜桃精品一区二区三区| 亚洲特级毛片| 激情综合色综合久久| 欧美四级在线观看| 久久频这里精品99香蕉| 亚洲免费电影在线| 欧美激情小视频| 欧美在线看片| 亚洲欧美日韩网| 亚洲裸体视频| 在线成人免费视频| 国产区欧美区日韩区| 欧美日韩美女在线| 欧美成人精品在线播放| 久久青草欧美一区二区三区| 亚洲综合二区| 亚洲综合好骚| 午夜精品视频在线观看一区二区| 亚洲三级影片| 一区二区免费在线观看| 亚洲黄色影片| 亚洲一区影院| 亚洲人成啪啪网站| 亚洲精品中文在线| 欧美一区二区三区久久精品| 美女主播视频一区| 亚洲乱码国产乱码精品精98午夜| 亚洲理论在线| 久久影视三级福利片| 亚洲欧美精品suv| 欧美超级免费视 在线| 久久青草久久| 国产一区二区三区免费观看 | 欧美国产日产韩国视频| 久久久久久日产精品| 国产精品色一区二区三区| 亚洲美女精品成人在线视频| 亚洲国产综合视频在线观看| 久久久亚洲高清| 久久影院亚洲| 国内偷自视频区视频综合| 欧美亚洲视频在线看网址| 久久激情综合网| 国内精品久久久久久久影视麻豆 | 欧美午夜精彩| 一本色道久久综合狠狠躁的推荐| 一区二区三区日韩精品视频| 欧美日本免费| 正在播放日韩| 久久九九久精品国产免费直播| 国产亚洲一区二区在线观看 | 亚洲福利视频一区| 亚洲国产成人久久综合| 久久综合网络一区二区| 欧美韩日亚洲| 在线天堂一区av电影| 国产精品高潮呻吟久久av无限| 一区二区91| 久久精品亚洲热| 亚洲国产日韩在线一区模特| 欧美电影免费| 亚洲一区二区三区三| 久久久久在线观看| 亚洲经典自拍| 国产精品拍天天在线| 欧美在线观看日本一区| 欧美va天堂在线| 99精品视频免费| 国产日韩av在线播放| 免费成人高清视频| 中日韩美女免费视频网站在线观看| 午夜精品999| 亚洲大片精品永久免费| 久久全国免费视频| 久久精品国产亚洲一区二区三区 | 国产精品国产一区二区| 欧美在线一级视频| 久久精品视频va| 尤物yw午夜国产精品视频明星| 亚洲欧美区自拍先锋| 国产精品呻吟| 久久久亚洲综合| 一区二区三区国产盗摄| 久久九九免费视频| 日韩视频不卡| 国产视频精品网| 欧美大片网址| 午夜精品一区二区在线观看 | 美女黄毛**国产精品啪啪 | 国产精品99久久99久久久二8| 久久久久**毛片大全| 一区二区三区成人精品| 一区二区三区在线不卡| 欧美日韩一区在线视频| 久久一区二区视频| 亚洲尤物视频网| 亚洲国产免费| 狼狼综合久久久久综合网| 一本久道久久久| 亚洲大胆女人| 好吊日精品视频| 国产日韩视频| 国产精品亚洲片夜色在线| 欧美屁股在线| 美女精品在线| 久久久激情视频| 亚洲欧美www| 中日韩在线视频| 日韩视频一区二区三区在线播放| 欧美成人免费视频| 免费观看亚洲视频大全| 久久视频一区二区| 久久久久久九九九九| 欧美亚洲一区二区三区| 亚洲无线一线二线三线区别av| 亚洲精品美女在线| 亚洲黄色性网站| 在线欧美日韩精品| 在线日本成人| 亚洲第一精品电影| 亚洲高清激情| 亚洲人体大胆视频| 91久久精品国产91久久性色tv| 亚洲第一区在线| 在线观看亚洲视频啊啊啊啊| 国模私拍视频一区| 影音先锋日韩精品| 禁断一区二区三区在线| 在线免费观看日韩欧美| 亚洲国产婷婷| 亚洲精品中文字幕在线| 亚洲无线视频| 欧美在线视频观看| 久久在线免费观看| 欧美风情在线观看| 亚洲人久久久| 亚洲天堂第二页| 欧美一级久久| 久久这里只有| 欧美日本精品| 国产日韩综合一区二区性色av| 国模大胆一区二区三区|