精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Unicode、UTF-8、UTF-16 終于懂了

系統 Linux
計算機起源于美國,上個世紀,他們對英語字符與二進制位之間的關系做了統一規定,并制定了一套字符編碼規則,這套編碼規則被稱為ASCII編碼。

[[398954]]

本文轉載自微信公眾號「Linux開發那些事兒」,作者 LinuxThings。轉載本文請聯系Linux開發那些事兒公眾號。

計算機起源于美國,上個世紀,他們對英語字符與二進制位之間的關系做了統一規定,并制定了一套字符編碼規則,這套編碼規則被稱為ASCII編碼

ASCII 編碼一共定義了128個字符的編碼規則,用七位二進制表示 ( 0x00 - 0x7F ), 這些字符組成的集合就叫做 ASCII 字符集

隨著計算機的普及,在不同的地區和國家又出現了很多字符編碼,比如: 大陸的 GB2312、港臺的 BIG5, 日本的 Shift JIS等等

由于字符編碼不同,計算機在不同國家之間的交流變得很困難,經常會出現亂碼的問題,比如:對于同一個二進制數據,不同的編碼會解析出不同的字符

當互聯網迅猛發展,地域限制打破之后,人們迫切的希望有一種統一的規則, 對所有國家和地區的字符進行編碼,于是 Unicode 就出現了

Unicode 簡介

Unicode 是國際標準字符集,它將世界各種語言的每個字符定義一個唯一的編碼,以滿足跨語言、跨平臺的文本信息轉換

Unicode 字符集的編碼范圍是 0x0000 - 0x10FFFF , 可以容納一百多萬個字符, 每個字符都有一個獨一無二的編碼,也即每個字符都有一個二進制數值和它對應,這里的二進制數值也叫 碼點 , 比如:漢字 "中" 的 碼點是 0x4E2D, 大寫字母 A 的碼點是 0x41, 具體字符對應的 Unicode 編碼可以查詢 Unicode字符編碼表

字符集和字符編碼

字符集是很多個字符的集合,例如 GB2312 是簡體中文的字符集,它收錄了六千多個常用的簡體漢字及一些符號,數字,拼音等字符

字符編碼是 字符集的一種實現方式,把字符集中的字符映射為特定的字節或字節序列,它是一種規則

比如:Unicode 只是字符集,UTF-8、UTF-16、UTF-32 才是真正的字符編碼規則

Unicode 字符存儲

Unicode 是一個符號集, 它只規定了每個符號的二進制值,但是符號具體如何存儲它并沒有規定

前面提到, Unicode 字符集的編碼范圍是 0x0000 - 0x10FFFF,因此需要 1 到 3 個字節來表示

那么,對于三個字節的 Unicode字符,計算機怎么知道它表示的是一個字符而不是三個字符呢 ?

如果所有字符都用三個字節表示,那么對于那些一個字節就能表示的字符來說,有兩個字節是無意義的,對于存儲來說,這是極大的浪費,假如 , 一個普通的文本, 大部分字符都只需一個字節就能表示,現在如果需要三個字節才能表示,文本的大小會大出三倍左右

因此,Unicode 出現了多種存儲方式,常見的有 UTF-8、UTF-16、UTF-32,它們分別用不同的二進制格式來表示 Unicode 字符

UTF-8、UTF-16、UTF-32 中的 "UTF" 是 "Unicode Transformation Format" 的縮寫,意思是"Unicode 轉換格式",后面的數 字表明至少使用多少個比特位來存儲字符, 比如:UTF-8 最少需要8個比特位也就是一個字節來存儲,對應的, UTF-16 和 UTF-32 分別需要最少 2 個字節 和 4 個字節來存儲

UTF-8 編碼

UTF-8: 是一種變長字符編碼,被定義為將碼點編碼為 1 至 4 個字節,具體取決于碼點數值中有效二進制位的數量

UTF-8 的編碼規則:

對于單字節的符號,字節的第一位設為 0,后面 7 位為這個符號的 Unicode 碼。因此對于英語字母,UTF-8 編碼和 ASCII 碼是相同的, 所以 UTF-8 能兼容 ASCII 編碼,這也是互聯網普遍采用 UTF-8 的原因之一

對于 n 字節的符號( n > 1),第一個字節的前 n 位都設為 1,第 n + 1 位設為 0,后面字節的前兩位一律設為 10 。剩下的沒有提及的二進制位,全部為這個符號的 Unicode 碼

下表是Unicode編碼對應UTF-8需要的字節數量以及編碼格式

Unicode編碼范圍(16進制) UTF-8編碼方式(二進制)
000000 - 00007F 0xxxxxxx ASCII碼
000080 - 0007FF 110xxxxx 10xxxxxx
000800 - 00FFFF 1110xxxx 10xxxxxx 10xxxxxx
01 0000 - 10 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

表格中第一列是Unicode編碼的范圍,第二列是對應UTF-8編碼方式,其中紅色的二進制 "1" 和 "0" 是固定的前綴, 字母 x 表示可用編碼的二進制位

根據上面表格,要解析 UTF-8 編碼就很簡單了,如果一個字節第一位是 0 ,則這個字節就是一個單獨的字符,如果第一位是 1 ,則連續有多少個 1 ,就表示當前字符占用多少個字節

下面以 "中" 字 為例來說明 UTF-8 的編碼,具體的步驟如下圖, 為了便于說明,圖中左邊加了 1,2,3,4 的步驟編號

首先查詢 "中" 字的 Unicode 碼 0x4E2D, 轉成二進制, 總共有 16 個二進制位, 具體如上圖 步驟1 所示

通過前面的 Unicode 編碼和 UTF-8 編碼的表格知道,Unicode 碼 0x4E2D 對應 000800 - 00FFFF 的范圍,所以, "中" 字的 UTF-8 編碼 需要 3 個字節,即格式是 1110xxxx 10xxxxxx 10xxxxxx

然后從 "中" 字的最后一個二進制位開始,按照從后向前的順序依次填入格式中的 x 字符,多出的二進制補為 0, 具體如上圖 步驟2、步驟3 所示

于是,就得到了 "中" 的 UTF-8 編碼是 11100100 10111000 10101101, 轉換成十六進制就是 0xE4B8AD, 具體如上圖 步驟4 所示

UTF-16 編碼

UTF-16 也是一種變長字符編碼, 這種編碼方式比較特殊, 它將字符編碼成 2 字節 或者 4 字節

具體的編碼規則如下:

  • 對于 Unicode 碼小于 0x10000 的字符, 使用 2 個字節存儲,并且是直接存儲 Unicode 碼,不用進行編碼轉換
  • 對于 Unicode 碼在 0x10000 和 0x10FFFF 之間的字符,使用 4 個字節存儲,這 4 個字節分成前后兩部分,每個部分各兩個字節,其中,前面兩個字節的前 6 位二進制固定為 110110,后面兩個字節的前 6 位二進制固定為 110111, 前后部分各剩余 10 位二進制表示符號的 Unicode 碼 減去 0x10000 的結果
  • 大于 0x10FFFF 的 Unicode 碼無法用 UTF-16 編碼

下表是Unicode編碼對應UTF-16編碼格式

Unicode編碼范圍(16進制) 具體Unicode碼(二進制) UTF-16編碼方式(二進制) 字節
0000 0000 - 0000 FFFF xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx 2
0001 0000 - 0010 FFFF yy yyyyyyyy xx xxxxxxxx 110110yy yyyyyyyy 110111xx xxxxxxxx 4

表格中第一列是Unicode編碼的范圍,第二列是 具體Unicode碼的二進制 ( 第二行的第二列表示的是 Unicode 碼 減去 0x10000 后的二進制 ) , 第三列是對應UTF-16編碼方式,其中紅色的二進制 "1" 和 "0" 是固定的前綴, 字母 x 和 y 表示可用編碼的二進制位, 第四列表示 編碼占用的字節數

前面提到過,"中" 字的 Unicode 碼是 4E2D, 它小于 0x10000,根據表格可知,它的 UTF-16 編碼占兩個字節,并且和 Unicode 碼相同,所以 "中" 字的 UTF-16 編碼為 4E2D

我從 Unicode字符表網站 找了一個老的南阿拉伯字母, 它的 Unicode 碼是: 0x10A6F , 可以訪問 https://unicode-table.com/cn/10A6F/ 查看字符的說明, Unicode 碼對應的字符如下圖所示

下面以這個 老的南阿拉伯字母的 Unicode 碼 0x10A6F 為例來說明 UTF-16 4 字節的編碼,具體步驟如下,為了便于說明,圖中左邊加了 1,2,3,4 、5的步驟編號

首先把 Unicode 碼 0x10A6F 轉成二進制, 對應上圖的 步驟 1

然后把 Unicode 碼 0x10A6F 減去 0x10000, 結果為 0xA6F 并把這個值轉成二進制 00 00000010 10 01101111,對應上圖的 步驟 2

然后 從二進制 00 00000010 10 01101111 的最后一個二進制為開始,按照從后向前的順序依次填入格式中的 x 和 y 字符,多出的二進制補為 0, 對應上圖的 步驟 3、 步驟 4

于是,就計算出了 Unicode 碼 0x10A6F 的 UTF-16 編碼是 11011000 00000010 11011110 01101111 , 轉換成十六進制就是 0xD802DE6F, 對應上圖的 步驟 5

UTF-32 編碼

UTF-32 是固定長度的編碼,始終占用 4 個字節,足以容納所有的 Unicode 字符,所以直接存儲 Unicode 碼即可,不需要任何編碼轉換。雖然浪費了空間,但提高了效率。

UTF-8、UTF-16、UTF-32 之間如何轉換

前面介紹過,UTF-8、UTF-16、UTF-32 是 Unicode 碼表示成不同的二進制格式的編碼規則,同樣,通過這三種編碼的二進制表示,也能獲得對應的 Unicode 碼,有了字符的 Unicode 碼,按照上面介紹的 UTF-8、UTF-16、UTF-32 的編碼方法 就能轉換成任一種編碼了

UTF 字節序

最小編碼單元是多字節才會有字節序的問題存在,UTF-8 最小編碼單元是一字節,所以 它是沒有字節序的問題,UTF-16 最小編碼單元是 2 個字節,在解析一個 UTF-16 字符之前,需要知道每個編碼單元的字節序

比如:前面提到過,"中" 字的 Unicode 碼是 4E2D, "?" 字符的 Unicode 碼是 2D4E, 當我們收到一個 UTF-16 字節流 4E2D 時,計算機如何識別它表示的是字符 "中" 還是 字符 "?" 呢 ?

所以,對于多字節的編碼單元,需要有一個標記顯式的告訴計算機,按照什么樣的順序解析字符,也就是字節序,字節序分為 大端字節序 和 小端字節序

小端字節序簡寫為 LE( Little-Endian ), 表示 低位字節在前,高位字節在后, 高位字節保存在內存的高地址端,而低位字節保存在內存的低地址端

大端字節序簡寫為 BE( Big-Endian ), 表示 高位字節在前,低位字節在后,高位字節保存在內存的低地址端,低位字節保存在在內存的高地址端

下面以 0x4E2D 為例來說明大端和小端,具體參見下圖:

數據是從高位字節到低位字節顯示的,這也更符合人們閱讀數據的習慣,而內存地址是從低地址向高地址增加

所以,字符0x4E2D 數據的高位字節是 4E,低位字節是 2D

按照大端字節序的高位字節保存內存低地址端的規則,4E 保存到低內存地址 0x10001 上,2D 則保存到高內存地址 0x10002 上

對于小端字節序,則正好相反,數據的高位字節保存到內存的高地址端,低位字節保存到內存低地址端的,所以 4E 保存到高內存地址 0x10002 上,2D 則保存到低內存地址 0x10001 上

BOM

BOM 是 byte-order mark 的縮寫,是 "字節序標記" 的意思, 它常被用來當做標識文件是以 UTF-8、UTF-16 或 UTF-32 編碼的標記

在 Unicode 編碼中有一個叫做 "零寬度非換行空格" 的字符 ( ZERO WIDTH NO-BREAK SPACE ), 用字符 FEFF 來表示

對于 UTF-16 ,如果接收到以 FEFF 開頭的字節流, 就表明是大端字節序,如果接收到 FFFE, 就表明字節流 是小端字節序

UTF-8 沒有字節序問題,上述字符只是用來標識它是 UTF-8 文件,而不是用來說明字節順序的。"零寬度非換行空格" 字符 的 UTF-8 編碼是 EF BB BF, 所以如果接收到以 EF BB BF 開頭的字節流,就知道這是UTF-8 文件

下面的表格列出了不同 UTF 格式的固定文件頭

UTF編碼 固定文件頭
UTF-8 EF BB BF
UTF-16LE FF FE
UTF-16BE FE FF
UTF-32LE FF FE 00 00
UTF-32BE 00 00 FE FF

根據上面的 固定文件頭,下面列出了 "中" 字在文件中的存儲 ( 包含文件頭 )

編碼 固定文件頭
Unicode 編碼 0X004E2D
UTF-8 EF BB BF 4E 2D
UTF-16BE FE FF 4E 2D
UTF-16LE FF FE 2D 4E
UTF-32BE 00 00 FE FF 00 00 4E 2D
UTF-32LE FF FE 00 00 2D 4E 00 00

常見的字符編碼的問題

  • Redis 中文key的顯示

有時候我們需要向redis中寫入含有中文的數據,然后在查看數據,但是會看到一些其他的字符,而不是我們寫入的中文

上圖中,我們向redis 寫入了一個 "中" 字,通過 get 命令查看的時候無法顯示我們寫入的 "中" 字

這時候加一個 --raw 參數,重新啟動 redis-cli 即可,也即 執行 redis-cli --raw 命令啟動redis客戶端,具體的如下圖所示

  • MySQL 中的 utf8 和 utf8mb4

MySQL 中的 "utf8" 實際上不是真正的 UTF-8, "utf8" 只支持每個字符最多 3 個字節, 對于超過 3 個字節的字符就會出錯, 而真正的 UTF-8 至少要支持 4 個字節

MySQL 中的 "utf8mb4" 才是真正的 UTF-8

下面以 test 表為例來說明, 表結構如下:

  1. mysql> show create table test\G 
  2. *************************** 1. row *************************** 
  3.        Table: test 
  4. Create TableCREATE TABLE `test` ( 
  5.   `namechar(32) NOT NULL 
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 
  7. 1 row in set (0.00 sec) 

向 test 表分別插入 "中" 字 和 Unicode 碼為 0x10A6F 的字符,這個字符需要從 https://unicode-table.com/cn/10A6F/ 直接復制到 MySQL 控制臺上,手工輸入會無效,具體的執行結果如下圖:

從上圖可以看出,插入 "中" 字 成功,插入 0x10A6F 字符失敗,錯誤提示無效的字符串,\xF0\X90\XA9\xAF 正是 0x10A6F 字符的 UTF-8 編碼,占用 4 個字節, 因為 MySQL 的 utf8 編碼最多只支持 3 個字節,所以插入會失敗

把 test 表的字符集改成 utf8mb4 , 排序規則 改成 utf8bm4_unicode_ci, 具體如下圖所示:

字符集和排序方式修改之后,再次插入 0x10A6F 字符, 結果是成功的,具體執行結果如下圖所示

上圖中,set names utf8mb4 是為了測試方便,臨時修改當前會話的字符集,以便保持和 服務器一致,實際解決這個問題需要修改 my.cnf 配置中 服務器和客戶端的字符集

小結

本文從字符編碼的歷史介紹了 Unicode 出現的原因,接著介紹了 Unicode 字符集中 三種不同的編碼方式:UTF-8、UTF-16、UTF-32 以及它們的的編碼方法,緊接著介紹了 字節序、BOM ,最后講到了字符集在 MySQL 和 Redis 應用中常見的問題以及解決方案 ,更多關于 Unicode 的介紹請參考 Unicode 的 RFC 文檔

 

責任編輯:武曉燕 來源: Linux開發那些事兒
相關推薦

2023-01-26 00:31:25

ASCIIBase64UTF-8

2024-05-29 13:05:44

2020-09-21 08:56:00

GolangUnicode編碼

2023-12-08 08:18:41

代號UnicodeUTF-8

2011-08-25 09:43:51

UTF-8中文man

2011-03-07 12:31:54

Filezilla

2016-12-13 10:13:18

PHPUTF-8實踐

2010-09-29 11:29:18

UnicodeJ2ME

2024-01-04 12:53:00

Unicode字符UTF-8

2016-09-23 13:07:41

JavaScript字符編碼UCS-2

2020-09-22 09:05:45

MySQLUTF-8utf8mb4

2019-04-15 14:05:56

MySQLUTF-8數據庫

2009-12-17 11:45:38

Linux UTF-8

2016-11-15 14:29:14

Linux文件編碼轉換

2010-01-08 11:52:37

ibmdwDB2

2011-07-29 14:08:26

iPhone UTF-8 XML

2024-02-20 13:12:00

UnicodeUTF-8GB2312

2009-12-16 09:45:13

UbuntuUbuntu ServUTF-8

2009-10-29 12:27:54

2018-06-25 14:29:45

MySQLbug數據庫
點贊
收藏

51CTO技術棧公眾號

一区二区三区在线| 澳门成人av网| 成人免费观看男女羞羞视频| 91精品国产乱码久久久久久蜜臀| 9.1成人看片| 91天天综合| 亚洲国产一区视频| 日本一区二区三区www| 在线观看一二三区| 一本久道久久综合婷婷鲸鱼| 日韩中文理论片| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 国产一区二区毛片| 国内免费精品永久在线视频| 国产伦精品一区二区三区视频女| 一区二区在线视频观看| 欧美主播一区二区三区| 国产精品视频网站在线观看| 丁香婷婷在线| 夫妻av一区二区| 国产日韩欧美综合| 在线观看日本视频| 黄色日韩精品| 久久深夜福利免费观看| 亚洲国产av一区| 激情小说一区| 欧美一级二级在线观看| 久久婷婷综合色| 韩漫成人漫画| 午夜欧美视频在线观看| 国产卡一卡二在线| 99青草视频在线播放视| 久久精品亚洲麻豆av一区二区| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 国产综合18久久久久久| 国产av一区二区三区| 老司机免费视频一区二区| 日本精品视频在线| 天堂网视频在线| 亚洲欧美成人| 国产91成人在在线播放| 日本一级淫片色费放| 国产福利视频在线| 97免费在线观看视频| 先锋影音亚洲资源| 国产性xxxx高清| 欧美不卡在线| xxxx性欧美| 九九热免费在线| 国产毛片一区二区三区| 日韩精品在线观看网站| 亚洲一区二区在线免费| 成人涩涩网站| 精品少妇一区二区三区视频免付费 | 国产精品毛片一区二区| 精品成人自拍视频| 亚洲成人xxx| 国产伦精品一区二区免费| 电影一区二区在线观看| 亚洲福利在线看| 精品无码在线视频| 女厕嘘嘘一区二区在线播放| 精品亚洲一区二区三区在线播放| av无码av天天av天天爽| 欧美人与牛zoz0性行为| 国产一区二区精品丝袜| 国产又粗又猛又爽又黄的视频四季| 青青草成人影院| 精品国产一区二区三区久久狼5月| 亚洲色图27p| 欧美三级网页| 欧美制服第一页| 少妇无套内谢久久久久| 久久66热偷产精品| 亚洲综合精品伊人久久| 欧美性受xxxx狂喷水| 95精品视频在线| 日韩av电影免费在线| 日本亚洲精品| 一级特黄大欧美久久久| 国产男女在线观看| 岛国一区二区| 精品国精品国产尤物美女| 中文字幕在线观看的网站| 成人免费a**址| 欧美精品制服第一页| 日韩精品久久久久久久| 人禽交欧美网站| 91|九色|视频| 日韩a在线观看| 亚洲人成在线观看一区二区| 日日摸日日碰夜夜爽无码| 日本在线精品| 精品国内二区三区| 成人做爰69片免网站| 欧美成人精品| 国产不卡av在线| 精品国产av一区二区| 久久久91精品国产一区二区精品 | 精品日韩av一区二区| 国产成人无码一区二区在线观看| 久久伦理在线| 91精品国产91久久久| 91久久国语露脸精品国产高跟| 成人免费毛片aaaaa**| 亚洲一区免费看| 美女搞黄视频在线观看| 91精品国产一区二区三区蜜臀| 国产精品一级黄片| 欧美一区二区三区免费看| 国产成人拍精品视频午夜网站| 亚洲精品911| 国产精品二三区| 成人观看免费完整观看| 国产成人精品福利| 欧美成aaa人片在线观看蜜臀| 国产寡妇亲子伦一区二区三区四区| 国产精品一级在线| 亚洲午夜精品一区二区| 神马久久午夜| 欧美精品一区二区在线播放| chinese全程对白| 久久综合亚州| 久久精品日产第一区二区三区乱码 | 亚洲午夜激情网页| 999久久久精品视频| h片在线观看网站| 亚洲天堂男人网| 中文乱码人妻一区二区三区视频| 免费国产黄色网址| 欧美日韩中文国产一区发布| 国产精品久久久久久久久影视 | 色综合视频一区二区三区高清| 噜噜噜躁狠狠躁狠狠精品视频| 精品久久人人做人人爱| 国产成人免费观看网站| 亚洲综合精品| 精品欧美国产一区二区三区不卡| 亚洲www色| 337p亚洲精品色噜噜狠狠| 久久久久久国产免费a片| 国产亚洲激情| 精品视频在线观看| 黄色在线观看www| 亚洲成人黄色网址| 国产在线观看成人| 成人爽a毛片一区二区免费| 国产精品无码免费专区午夜| 无码国模国产在线观看| 欧美猛交ⅹxxx乱大交视频| 精品二区在线观看| 一区二区理论电影在线观看| 美女被爆操网站| 亚洲午夜精品久久久久久app| 成人在线视频网址| 国产黄色大片在线观看| 亚洲国产成人精品电影| 日韩精品无码一区二区| 99re热这里只有精品视频| 97国产在线播放| 久久最新网址| 国产精品一二三在线| 日本成a人片在线观看| 9191国产精品| 国产亚洲成人精品| 26uuu亚洲婷婷狠狠天堂| 日本爱爱免费视频| 五月激情久久久| 成人午夜电影免费在线观看| 黄色在线免费观看网站| 这里只有精品在线播放| 国产精品久久久久久久成人午夜 | 91制片厂在线| 国产精品亚洲一区二区三区妖精| 国产精品第157页| 亚洲+变态+欧美+另类+精品| 国产精品扒开腿爽爽爽视频| 免费大片黄在线| 精品国产一区二区亚洲人成毛片 | 黑人と日本人の交わりビデオ| 国产综合久久久久久鬼色| 中文精品无码中文字幕无码专区| 中文有码一区| 成人亚洲激情网| 国产在线天堂www网在线观看| 在线成人一区二区| 成人免费一级视频| 色综合久久66| 欧洲第一无人区观看| 97aⅴ精品视频一二三区| 色婷婷狠狠18| 伊人久久婷婷| 一本一道久久a久久精品综合| 91亚洲无吗| 国产精品亚洲网站| 高清精品在线| 久久中文字幕视频| 国产小视频免费在线观看| 欧美一级久久久| 男人天堂视频网| 亚洲一区在线观看免费 | 日韩中文首页| 激情五月综合色婷婷一区二区 | 黄网站在线观| 日韩中文字幕不卡视频| 天堂网av在线播放| 在线成人免费观看| 久久久久久久久久成人| 亚洲综合精品久久| 日韩精品一区二区三区在线视频| 95精品视频在线| 亚洲麻豆一区二区三区| 精品一区二区三区免费播放| 大香煮伊手机一区| 亚洲福利国产| 老司机午夜网站| 不卡av一区二区| 噜噜噜噜噜久久久久久91| 国产精品扒开腿做| 亚洲欧美韩国| 欧美国产日韩一区二区三区| 黄色成年人视频在线观看| 亚洲天堂网在线观看| 天堂在线视频免费| 欧美电视剧在线看免费| 国产视频在线观看视频| 欧美午夜电影一区| 久久久久久久亚洲| 欧美性猛交xxxxx水多| 日韩美女黄色片| 亚洲一线二线三线视频| 国精品无码一区二区三区| 国产精品美女久久久久久久网站| 久久久久久久毛片| 国产午夜一区二区三区| 性久久久久久久久久| 91在线小视频| 97人妻天天摸天天爽天天| caoporn国产一区二区| 好吊色视频一区二区三区| 国产电影一区在线| 极品白嫩少妇无套内谢| 国产河南妇女毛片精品久久久| 一个人看的视频www| 国产成人鲁色资源国产91色综| 一卡二卡三卡四卡五卡| 国产伦精品一区二区三区免费迷| 在线播放免费视频| 国产美女精品一区二区三区| 91视频福利网| 国产成人精品1024| 熟妇高潮一区二区| 91视视频在线直接观看在线看网页在线看| 在线视频 日韩| 国产喂奶挤奶一区二区三区 | 亚洲一区二区三区激情| 国产在线视频卡一卡二| 亚洲不卡av一区二区三区| 国产毛片aaa| 欧美私人免费视频| av免费观看网址| 亚洲第一免费网站| 欧美性孕妇孕交| 中文字幕在线国产精品| 性欧美ⅴideo另类hd| 91av国产在线| 日本国产欧美| 99re视频在线| 亚洲伊人春色| 中文字幕一区二区三区乱码| 欧美日韩蜜桃| 少妇高潮喷水久久久久久久久久| 日韩专区中文字幕一区二区| 国产无遮挡猛进猛出免费软件| 国产美女在线观看一区| 中国xxxx性xxxx产国| 久久久国产午夜精品| www.av免费| 五月天中文字幕一区二区| 亚洲av无码精品一区二区| 欧美高清精品3d| 日本高清视频在线| 最近2019年日本中文免费字幕| 2021国产在线| 日韩美女视频免费看| av国产精品| 久久精品一二三区| 亚洲精品网址| av免费网站观看| 国产麻豆精品95视频| 久久精品国产亚洲AV熟女| 成人欧美一区二区三区在线播放| 国产一级淫片a| 欧美精品一二三区| 日本亚洲欧美| 欧美另类xxx| 欧亚一区二区| 国产精品一区二区不卡视频| 成人网18免费网站| 性欧美大战久久久久久久| 老司机午夜精品| 国产美女喷水视频| 一区二区在线观看视频在线观看| 中国黄色一级视频| 亚洲精品黄网在线观看| 黄色网页在线观看| 国产精品高潮呻吟久久av黑人| 91蜜桃臀久久一区二区| 亚洲高清在线播放| 免费精品视频| 国产艳妇疯狂做爰视频| 自拍偷拍亚洲激情| 国产一级片av| 日韩国产欧美区| 大黄网站在线观看| 亚洲综合最新在线| 日韩电影免费在线观看| 日韩视频第二页| av在线这里只有精品| 免费看一级一片| 7777精品伊人久久久大香线蕉的 | www.成人免费视频| 黄色综合网站| 色狠狠综合天天综合综合| 成人免费网站在线| 国产人妻精品一区二区三区不卡| 国产欧美精品在线观看| 日韩欧美国产亚洲| 日韩精品一区二区三区视频播放| 午夜精品一区| 国产精品久久999| 在线看片中文字幕| 久久超碰99| 黄色高清视频网站| 奇米色777欧美一区二区| 国产熟妇搡bbbb搡bbbb| 亚洲大尺度视频在线观看| 国内精品久久久久久久久久久 | 在线观看免费黄视频| 国产精品一区二区无线| 456亚洲影院| 亚洲无码精品国产| 欧美日韩高清一区二区三区| 高h视频在线| 国产精品高清网站| 国产一区二区三区电影在线观看| 91九色在线观看视频| 91在线观看一区二区| 91video| 夜夜躁日日躁狠狠久久88av| 日日av拍夜夜添久久免费| 日韩不卡av| 麻豆免费看一区二区三区| 九九精品视频免费| 日韩美女在线视频| 国产绿帽刺激高潮对白| 香蕉成人啪国产精品视频综合网| 亚洲国产剧情在线观看| 国语自产在线不卡| 视频小说一区二区| 久久久久久香蕉| 中文字幕色av一区二区三区| 国产高中女学生第一次| 国内精品久久久久久| 日韩有码一区| 一区二区三区国产免费| 中文字幕字幕中文在线中不卡视频| 国产成人精品亚洲精品色欲| 韩剧1988在线观看免费完整版| 最新亚洲精品| 三级性生活视频| 婷婷综合另类小说色区| 成人免费在线观看| 97se亚洲综合| 香蕉久久夜色精品| 中文字幕观看av| 亚洲国产福利在线| jizz久久久久久| 丰满人妻一区二区三区53号| 97久久超碰精品国产| 伊人色综合久久久| 久久乐国产精品| 精品一区二区三区在线 | 超碰在线免费观看97| 成人免费高清视频在线观看| 欧美亚洲另类小说| 美女视频黄免费的亚洲男人天堂| 校花撩起jk露出白色内裤国产精品 | 久久99热国产| 日韩三级视频在线| 按摩亚洲人久久| 神马午夜久久| 少妇丰满尤物大尺度写真| 91久久国产最好的精华液| 色黄网站在线观看| 亚洲一区三区视频在线观看 | 五月婷婷综合激情网| 亚洲国产小视频在线观看| 男人亚洲天堂| 国产精品视频一区二区三区四区五区|