奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

php語(yǔ)言

談?wù)刾hp中的unicode和utf8編碼

時(shí)間:2025-03-06 09:27:25 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

談?wù)刾hp中的unicode和utf8編碼

  本文給大家深入討論了unicode和utf8這兩種編碼的關(guān)系,理解好了會(huì)發(fā)現(xiàn)網(wǎng)上一些舊的東西,是嚴(yán)重多余兼過(guò)期的,因?yàn)閺膗tf-8流行開(kāi)始到現(xiàn)在,早已經(jīng)由原來(lái)六字節(jié)可變編碼到實(shí)際完全居于unicode(UCS-2)的穩(wěn)定階段。

  重新認(rèn)識(shí)unicode和utf8編碼

  直到今天,準(zhǔn)確的說(shuō)是剛才,我才知道UTF-8編碼和Unicode編碼是不一樣的,是有區(qū)別的囧

  他們之間是有一定的聯(lián)系的,看看他們的區(qū)別:

  UTF-8的長(zhǎng)度是不一定的,有可能是1、2、3字節(jié)

  Unicode長(zhǎng)度一定,2個(gè)字節(jié)(USC-2)

  UTF-8可以和Unicode互相轉(zhuǎn)換

  unicode和utf8的關(guān)系

  Unicode(16進(jìn)制)

  UTF-8(二進(jìn)制)

  0000 - 007F 0xxxxxxx

  0080 - 07FF 110xxxxx 10xxxxxx

  0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx

  上面的表格有2個(gè)意思,第一個(gè)顯而易見(jiàn)就是說(shuō)Unicode和UTF-8字符范圍的對(duì)應(yīng),還有一個(gè)可以看出Unicode怎么和UTF-8互相轉(zhuǎn)換:

  先說(shuō)UTF-8到Unicode的轉(zhuǎn)換

  UTF-8編碼的二進(jìn)制和上面的3種格式進(jìn)行匹配,匹配到之后去掉固定位(表格中的非x位置),然后從右到左每8位一組,不夠8位左邊不領(lǐng),湊夠2個(gè)字節(jié)16 bits,這16 bits所表示的就是UTF-8對(duì)應(yīng)的Unicode編碼,看看下面幾個(gè)例子:

  上面圖片中的文字編碼格式為UTF-8,可以用WinHex看到其16進(jìn)制表示

  復(fù)制代碼 代碼如下:

  字符 => UTF-8   => UTF-8二進(jìn)制=> 去掉固定位置湊夠16位的二進(jìn)制 => 16進(jìn)制

  漢  => E6B189 => 11100110 10110001 10001001 => 01101100 01001001 => 6C49

  字  => E5AD97 => 11100101 10101101 10010111 => 01011011 01010111 => 5B57

  #下面是在chrome命令行下面運(yùn)行的結(jié)果

  '\u6C49'

  "漢"

  '\u5B57'

  "字"

  #到這里的話,從UTF-8轉(zhuǎn)換到Unicode已經(jīng)是一件非常容易的事了,看看轉(zhuǎn)換的偽代碼

  讀取一個(gè)字節(jié),11100110

  判斷該UTF-8字符的格式,屬于第三種,3個(gè)字節(jié)

  繼續(xù)讀取2個(gè)字節(jié)得到 11100101 10101101 10010111

  按照格式去掉固定位     1011011 01010111

  不夠16位,左邊補(bǔ)零    01011011 01010111  => 5B57

  再看看從Unicode到UTF-8的轉(zhuǎn)換

  復(fù)制代碼 代碼如下:

  5B57

  獲取5B57所在的Unicode范圍,0800 <= 5B57 <= FFFF,得知5B57的UTF-8有三個(gè)字節(jié),形式為1110xxxx 10xxxxxx 10xxxxxx

  獲取5B57的二進(jìn)制編碼 101101101010111

  用上一步驟的二進(jìn)制編碼從右至左拼接UTF-8編碼 11100101 10101101 10010111

  說(shuō)說(shuō)問(wèn)題

  再說(shuō)說(shuō)今天這個(gè)問(wèn)題的起因,從前端輸入很多單詞,UTF-8格式每個(gè)詞最多30個(gè)字節(jié),因此會(huì)在前端和后臺(tái)分別做驗(yàn)證,javascript用的是Unicode編碼,后端程序用的是UTF-8編碼,現(xiàn)在的解決辦法是這樣

  前端

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  function utf8_bytes(str)

  {

  var len = 0, unicode;

  for(var i = 0; i < str.length; i++)

  {

  unicode = str.charCodeAt(i);

  if(unicode < 0x0080) {

  ++len;

  } else if(unicode < 0x0800) {

  len += 2;

  } else if(unicode <= 0xFFFF) {

  len += 3;

  }else {

  throw "characters must be USC-2!!"

  }

  }

  return len;

  }

  #例子

  utf8_bytes('asdasdas')

  8

  utf8_bytes('yrt燕睿濤')

  12

  后臺(tái)

  ?

  1

  2

  3

  4

  #對(duì)于GBK字符串

  $len = ceil(strlen(bin2hex(iconv('GBK', 'UTF-8', $word)))/2);

  #對(duì)于UTF8字符串

  $len = ceil(strlen(bin2hex($word))/2);

  以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

【談?wù)刾hp中的unicode和utf8編碼】相關(guān)文章:

淺析PHP中的UNICODE編碼與解碼12-23

ASCII編碼和Unicode編碼06-02

ASCII編碼與Unicode編碼02-05

PHP如何實(shí)現(xiàn)Unicode和Utf-8編碼相互轉(zhuǎn)換07-28

C語(yǔ)言:ASCII編碼與Unicode編碼05-20

php制作unicode解碼工具08-02

php讀取和保存base64編碼圖片05-10

PHP中php://input和$-POST的區(qū)別03-27

PHP解密Unicode及Escape加密字符串03-23

主站蜘蛛池模板: 肥乡县| 吴忠市| 信丰县| 建宁县| 仪陇县| 迁安市| 饶河县| 清丰县| 西乌珠穆沁旗| 锡林浩特市| 南雄市| 石嘴山市| 普洱| 满城县| 绥阳县| 鄯善县| 皮山县| 察隅县| 奎屯市| 乌苏市| 六盘水市| 普格县| 江川县| 临泽县| 广安市| 九龙县| 登封市| 东宁县| 万全县| 读书| 裕民县| 普安县| 丰都县| 漯河市| 乌审旗| 容城县| 甘洛县| 池州市| 江达县| 缙云县| 凤山市|