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

woaidongmao

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

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

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

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

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

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

其中講了UTF8的編碼

當(dāng)要表示的內(nèi)容是 7位 的時候就用一個字節(jié):0*******  第一個0為標志位,剩下的空間正好可以表示ASCII 0127 的內(nèi)容。
  當(dāng)要表示的內(nèi)容在 8 到 11 位的時候就用兩個字節(jié):110***** 10******  第一個字節(jié)的110和第二個字節(jié)的10為標志位。
  當(dāng)要表示的內(nèi)容在 12 到 16 位的時候就用三個字節(jié):1110***** 10****** 10******    和上面一樣,第一個字節(jié)的1110和第二、三個字節(jié)的10都是標志位,剩下的空間正好可以表示漢字。
  以此類推:
四個字節(jié):11110**** 10****** 10****** 10******
  五個字節(jié):111110*** 10****** 10****** 10****** 10******
  六個字節(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) 評論(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>
            久久国产精品久久精品国产| 久久欧美中文字幕| 久久国产一区二区| 亚洲视屏一区| 亚洲少妇诱惑| 亚洲一区二区三区激情| 夜夜嗨av一区二区三区网页| 亚洲国产天堂久久国产91| 激情成人av| 在线观看精品视频| 亚洲国产美国国产综合一区二区| 永久久久久久| 日韩视频―中文字幕| 一区二区三区精品国产| 午夜在线播放视频欧美| 久久精品日产第一区二区| 欧美大片免费观看在线观看网站推荐 | 欧美在线视频在线播放完整版免费观看| 亚洲欧美电影院| 玖玖综合伊人| 一区二区三区免费在线观看| 欧美在线一区二区| 欧美精品一卡| 国内精品久久久久久久影视麻豆 | 午夜精品久久久久久久蜜桃app| 欧美一区=区| 久久亚洲私人国产精品va媚药| 亚洲第一精品福利| 亚洲精选在线| 久久久精品网| 欧美日韩亚洲一区二区三区在线观看 | 国一区二区在线观看| 午夜久久久久久| 性久久久久久久久久久久| 国产日本欧洲亚洲| 国产欧美精品一区二区三区介绍| 国产精品日本一区二区| 国产精品日日摸夜夜添夜夜av| 国产麻豆综合| 狠狠色狠狠色综合系列| 国产综合香蕉五月婷在线| 狠狠色噜噜狠狠色综合久| 亚洲福利av| 亚洲精品欧美一区二区三区| 亚洲制服av| 久久九九99视频| 亚洲国产一区二区三区在线播| 亚洲最新视频在线| 午夜国产一区| 久久综合中文| 国产精品久久久久久久9999| 亚洲自拍偷拍一区| 一区二区欧美在线观看| 欧美成人激情在线| 欧美国产日韩一区二区三区| 亚洲三级国产| 亚洲资源在线观看| 久久久久一区二区| 欧美日韩一区二区三区免费看 | 在线色欧美三级视频| 国产有码一区二区| 伊伊综合在线| 亚洲字幕在线观看| 久久先锋影音av| 亚洲精品社区| 久久国产乱子精品免费女| 欧美精品自拍偷拍动漫精品| 国产一区视频网站| 亚洲色在线视频| 久久亚洲精品伦理| 欧美一区二区三区四区在线观看| 国产精品99久久99久久久二8 | 国产亚洲美州欧州综合国| 美女久久网站| 欧美日韩一区二区三区在线视频 | 国产欧美一区二区白浆黑人| 亚洲国产视频a| 久久精品中文字幕免费mv| 亚洲国产一区视频| 久久久久亚洲综合| 国产亚洲精久久久久久| 亚洲图片在线| 亚洲精品国产精品国自产在线| 欧美激情精品久久久久| 亚洲日本中文字幕免费在线不卡| 亚洲国产精品尤物yw在线观看| 亚洲精品欧美日韩专区| 亚洲精品美女| 久久精品中文字幕一区| 亚洲一区二区三区777| 久久av一区二区三区亚洲| 午夜精品福利一区二区三区av| 欧美日韩精品久久久| 亚洲黄色天堂| 欧美激情一区在线观看| 久久精品国产精品亚洲综合| 国产一区二区精品丝袜| 国产精品一二三| 午夜精品福利在线观看| 一区二区三区av| 国产精品99一区| 亚洲视频你懂的| 亚洲精品一级| 欧美日韩一区二区免费在线观看 | 国产精品日韩在线播放| 亚洲专区免费| 欧美一区二区三区免费看| 国产精品红桃| 久久久久久久999精品视频| 欧美一区二区三区播放老司机| 一区二区视频免费在线观看 | 免费中文日韩| 亚洲国产裸拍裸体视频在线观看乱了 | 精品成人久久| 免费视频最近日韩| 欧美成人国产| a4yy欧美一区二区三区| 夜夜狂射影院欧美极品| 欧美午夜精品一区二区三区| 亚洲欧美国内爽妇网| 欧美黄在线观看| 午夜精品理论片| 免费不卡在线观看| 伊人久久亚洲美女图片| 亚洲久久一区| 欧美自拍偷拍午夜视频| 亚洲茄子视频| 欧美高清视频一区二区| 亚洲国产导航| 亚洲青色在线| 国产婷婷精品| 亚洲国产精品热久久| 欧美午夜精品一区二区三区| 久久美女艺术照精彩视频福利播放| 久久亚洲精品伦理| 亚洲视频在线视频| 久久国产一区二区| 亚洲婷婷综合久久一本伊一区| 欧美亚洲综合另类| 99精品欧美一区| 久久免费视频网| 午夜精品亚洲| 欧美日韩精品在线播放| 麻豆精品网站| 国产精品一二三| 亚洲美女av在线播放| 一区久久精品| 亚洲午夜国产成人av电影男同| 国产色产综合色产在线视频| 久久爱www久久做| 日韩一区二区久久| 亚洲国产日韩一级| 午夜在线视频一区二区区别| 在线视频欧美精品| 欧美aⅴ一区二区三区视频| 久久精品视频亚洲| 国产精品va在线| 亚洲精品在线观看免费| 亚洲成人资源网| 欧美亚洲午夜视频在线观看| 亚洲中字在线| 欧美香蕉大胸在线视频观看| 欧美激情女人20p| 精品999久久久| 欧美一区二区三区视频在线观看| 亚洲特级片在线| 亚洲综合好骚| 91久久极品少妇xxxxⅹ软件| 一本大道久久a久久精二百| 91久久精品一区二区别| 久久久久久久久久码影片| 久久久精品一品道一区| 国产精品电影网站| 欧美在线免费看| 欧美大片免费观看在线观看网站推荐| 亚洲一区二区三区高清不卡| 亚洲视频1区| 国外成人在线| 日韩一级片网址| 亚洲成色777777在线观看影院| 亚洲先锋成人| 亚洲黄一区二区三区| 亚洲欧美日韩综合一区| 亚洲精品综合精品自拍| 欧美中文字幕在线播放| 亚洲天堂成人在线观看| 欧美中文字幕不卡| 日韩午夜电影| 久久久水蜜桃| 午夜精品国产| 欧美日本在线播放| 亚洲三级国产| av成人免费观看| 欧美久久久久久久久久| 99精品视频免费观看视频| 在线视频你懂得一区| 国产欧美在线视频| 久久久中精品2020中文| 91久久国产综合久久蜜月精品 | 一区二区免费在线观看|