談?wù)刾hp中的unicode和utf8編碼_第1頁
談?wù)刾hp中的unicode和utf8編碼_第2頁
談?wù)刾hp中的unicode和utf8編碼_第3頁
談?wù)刾hp中的unicode和utf8編碼_第4頁
談?wù)刾hp中的unicode和utf8編碼_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

本文格式為Word版,下載可任意編輯——談?wù)刾hp中的unicode和utf8編碼談?wù)刾hp中的unicode和utf8編碼

本文給大家深入議論了unicode和utf8這兩種編碼的關(guān)系,理解好了會察覺網(wǎng)上一些舊的東西,是嚴(yán)重多余兼過期的,由于從utf-8流行開頭到現(xiàn)在,早已經(jīng)由原來六字節(jié)可變編碼到實(shí)際完全居于unicodeUCS-2的穩(wěn)定階段。

重新熟悉unicode和utf8編碼

直到今天,切實(shí)的說是方才,我才知道UTF-8編碼和Unicode編碼是不一樣的,是有識別的囧

他們之間是有確定的聯(lián)系的,看看他們的識別:

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

Unicode長度確定,2個字節(jié)(USC-2)

UTF-8可以和Unicode彼此轉(zhuǎn)換

unicode和utf8的關(guān)系

Unicode16進(jìn)制

UTF-8二進(jìn)制

0000-007F0xxxxxxx

0080-07FF110xxxxx10xxxxxx

0800-FFFF1110xxxx10xxxxxx10xxxxxx

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

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

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

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

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

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

漢=E6B189=111001101011000110001001=0110110001001001=6C49

字=E5AD97=111001011010110110010111=0101101101010111=5B57

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

\u6C49

\u5B57

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

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

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

持續(xù)讀取2個字節(jié)得到111001011010110110010111

按照格式去掉固定位101101101010111

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

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

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

5B57

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

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

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

說說問題

再說說今天這個問題的起因,從前端輸入好多單詞,UTF-8格式每個詞最多30個字節(jié),因此會在前端和后臺分別做驗(yàn)證,javascript用的是Unicode編碼,后端程序用的是UTF-8編碼,現(xiàn)在的解決手段是這樣

前端

?

1

2

3

4

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

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

functionutf8_bytesstr

varlen=0,unicode;

forvari=0;istr.length;i++

unicode=str.charCodeAti;

ifunicode0x0080

++len;

elseifunicode0x0800

len+=2;

elseifunicode=0xFFFF

len+=3;

else

throwcharactersmustbeUSC-2!!

returnlen;

#例子

utf8_bytesasdasdas

8

utf8_bytesyrt燕睿濤

12

后臺

?

1

2

3

4

#對于GBK字符串

$len=ceils

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論