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

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>
            亚洲欧洲精品一区| 欧美日韩国产一区| 久久这里只精品最新地址| 亚洲电影成人| 国产欧美在线观看| 国产精品久久久久久久久久妞妞| 老鸭窝91久久精品色噜噜导演| 亚洲免费影院| 日韩一级片网址| 亚洲国产精品一区在线观看不卡 | 国产精品天天看| 99精品欧美一区| 免费一级欧美片在线播放| 亚洲一级片在线观看| 一本色道久久88精品综合| 亚洲电影视频在线| 国产欧美日韩免费看aⅴ视频| 欧美午夜片欧美片在线观看| 欧美午夜精品久久久久久孕妇 | 中文一区二区| 日韩视频永久免费| 宅男噜噜噜66国产日韩在线观看| 亚洲精品视频在线播放| 一本久久综合亚洲鲁鲁| 亚洲女同精品视频| 久久精品国亚洲| 欧美精品啪啪| 国产精品美腿一区在线看| 国产婷婷色一区二区三区| 国产亚洲精品高潮| 亚洲国产日韩欧美在线图片| 韩日欧美一区二区| 欧美日韩亚洲一区二区| 欧美大片专区| 欧美母乳在线| 国产精品任我爽爆在线播放| 欧美精品1区| 欧美午夜精品一区| 黄色成人小视频| 野花国产精品入口| 欧美在线播放一区| 欧美国产免费| 亚洲欧洲日产国产综合网| 91久久久久久| 亚洲国产成人久久综合| 亚洲激情成人在线| 亚洲人成小说网站色在线| 日韩一级视频免费观看在线| 亚洲毛片av| 日韩视频免费观看高清完整版| 亚洲免费在线电影| 欧美精品在线观看| 国产精品wwwwww| 国内精品视频在线播放| **性色生活片久久毛片| 亚洲毛片视频| 亚洲欧美日韩精品在线| 久久亚洲春色中文字幕久久久| 欧美**人妖| 亚洲欧美日韩中文在线制服| 鲁大师影院一区二区三区| 国产精品久久久久久超碰 | 久久亚洲图片| 午夜精品短视频| 欧美日韩亚洲一区三区| 尤物网精品视频| 久久久久久久波多野高潮日日| 日韩一级不卡| 免费不卡在线视频| 狠狠做深爱婷婷久久综合一区| 亚洲一区二区影院| 日韩一级片网址| 欧美美女日韩| 一二三区精品福利视频| 欧美jizzhd精品欧美巨大免费| 亚洲欧美色一区| 国产精品免费视频xxxx| 亚洲私人影院| 亚洲欧洲一区二区三区| 久久久久久久一区| 禁久久精品乱码| 久久一本综合频道| 久久爱www久久做| 韩国v欧美v日本v亚洲v| 久久久久久**毛片大全| 欧美中在线观看| 伊人成年综合电影网| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧美日韩在线高清直播| 日韩视频二区| 国产精品乱看| 欧美中文字幕在线播放| 亚洲欧美日韩中文视频| 国产亚洲成精品久久| 亚洲专区一区二区三区| 亚洲手机在线| 国产三级欧美三级日产三级99| 亚洲免费小视频| 欧美一区二区在线播放| 伊人久久噜噜噜躁狠狠躁| 免费在线日韩av| 欧美精品成人| 亚洲欧美中文在线视频| 欧美中文字幕精品| 亚洲美女少妇无套啪啪呻吟| 亚洲美女在线观看| 国产精品青草综合久久久久99 | 激情欧美一区二区三区在线观看| 免费成人黄色片| 欧美日韩dvd在线观看| 亚洲视频1区| 欧美一区二区日韩一区二区| 亚洲福利国产| 亚洲精品字幕| 国产日韩精品在线观看| 欧美一区=区| 蜜臀va亚洲va欧美va天堂| 亚洲视频福利| 久久久久免费视频| 中文精品一区二区三区| 欧美一区二区三区在线看 | 日韩亚洲成人av在线| 夜夜狂射影院欧美极品| 国产午夜精品在线观看| 亚洲日本电影| 国产日韩一区在线| 亚洲欧洲一区二区在线播放 | 亚洲尤物视频网| 亚洲精品一区二区三区av| 国产午夜精品在线| 日韩亚洲欧美中文三级| 狠狠色丁香婷婷综合| 亚洲视频一二三| 国内精品久久久久影院 日本资源| 亚洲国产日韩美| 国产日本欧美一区二区三区| 亚洲精品视频在线观看免费| 在线观看视频日韩| 亚洲欧美激情精品一区二区| 99视频精品| 女人天堂亚洲aⅴ在线观看| 韩国精品一区二区三区| 日韩视频精品在线| 亚洲精华国产欧美| 久久精品国产99| 欧美伊人久久| 国产精品免费视频观看| 在线一区视频| 99视频有精品| 欧美经典一区二区三区| 欧美韩国日本综合| 在线激情影院一区| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲国产日韩一区| 欧美人与性禽动交情品 | 亚洲欧美综合国产精品一区| 亚洲精品女av网站| 久久最新视频| 欧美大色视频| 亚洲精华国产欧美| 欧美+亚洲+精品+三区| 欧美成人国产| 亚洲国产视频a| 欧美福利电影网| 亚洲精品免费一二三区| 在线午夜精品自拍| 国产精品久久久久毛片大屁完整版 | 亚洲国产成人精品久久久国产成人一区 | 一区二区三区四区五区在线| 久久深夜福利免费观看| 91久久精品一区二区三区| 亚洲性线免费观看视频成熟| 国产亚洲免费的视频看| 久久亚洲综合| 亚洲一级网站| 亚洲成色777777在线观看影院 | 99精品欧美| 狠狠色伊人亚洲综合成人| 欧美福利视频一区| 久久岛国电影| 亚洲国产精品久久久久婷婷884 | 亚洲永久精品大片| 亚洲国产日韩欧美| 国产午夜久久久久| 欧美日韩一区二区在线视频 | 国产精品扒开腿做爽爽爽视频| 久久成人综合网| 亚洲欧美在线视频观看| 在线欧美电影| 国产精品亚洲一区| 欧美日韩国产系列| 美女视频黄a大片欧美| 欧美一区二区三区四区视频| 亚洲网站在线| 艳妇臀荡乳欲伦亚洲一区| 欧美大胆成人| 欧美91大片| 麻豆九一精品爱看视频在线观看免费| 翔田千里一区二区| 制服丝袜亚洲播放|