亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

拆解Emoji隱藏代碼:Unicode碼點(diǎn)、SoftBank映射與字素簇處理

拆解Emoji隱藏代碼:Unicode碼點(diǎn)、SoftBank映射與字素簇處理 1. 先把隱藏代碼這四個(gè)字拆開看群里隔三差五就有人轉(zhuǎn)那種長(zhǎng)圖標(biāo)題寫著微信聊天必備最新Emoji隱藏代碼大全配一張密密麻麻的表格左邊一串U1F600這樣的字符右邊一個(gè)小黃臉。底下總有人問這玩意兒怎么用我照著敲進(jìn)去發(fā)出來還是一堆字母。這個(gè)問題我在幾年前做聊天內(nèi)容處理的時(shí)候也困惑過。當(dāng)時(shí)要給一批聊天記錄做表情統(tǒng)計(jì)第一反應(yīng)是拿正則去匹配冒號(hào)包起來的英文單詞結(jié)果一條都匹配不上后來才反應(yīng)過來微信里根本沒有 Slack 那種:smile:自動(dòng)轉(zhuǎn)換機(jī)制你發(fā)的每一個(gè)表情本質(zhì)上就是 Unicode 字符本身不存在敲代碼變圖標(biāo)這回事。所以這篇東西想講清楚三件事所謂隱藏代碼究竟是哪幾種東西混在一起被叫成了同一個(gè)名字SoftBank 和 Unified 這兩套編碼到底什么關(guān)系、對(duì)照表怎么讀以及如果你想真的做到敲兩三個(gè)字母就蹦出一個(gè)表情在微信這條鏈路上有哪些能落地的辦法。適合誰(shuí)看做聊天類產(chǎn)品、做文本處理、做社群運(yùn)營(yíng)或者單純想在聊天里少翻兩次表情面板的人都能拿走點(diǎn)東西。我先把最容易混淆的概念擺平不然往下看全是漿糊。1.1 三種被混稱為代碼的東西市面上流傳的Emoji代碼其實(shí)至少混了三種完全不同的東西。第一種是碼點(diǎn)Code Point寫作U1F600這種形式。它是 Unicode 標(biāo)準(zhǔn)給每個(gè)字符分配的編號(hào)純粹是身份證號(hào)跟微信、跟任何 App 都沒關(guān)系。你把這個(gè)編號(hào)敲進(jìn)輸入框它不會(huì)變成表情因?yàn)檩斎肟蛘J(rèn)的是字符本身不是編號(hào)的文本表示。第二種是短代碼Shortcode長(zhǎng)成:smile:這樣。這套東西是聊天社區(qū)早期為了在純文本環(huán)境里表達(dá)表情發(fā)明的約定服務(wù)端渲染時(shí)把短代碼替換成圖片。它是一套私有約定不同平臺(tái)各玩各的GitHub 一套、Slack 一套、Discourse 又一套。微信不支持這套自動(dòng)替換。第三種是轉(zhuǎn)義序列比如 JavaScript 里的\u{1F600}、HTML 里的#128512;、CSS 里的\01F600。這是給代碼看的瀏覽器或解析器會(huì)把它還原成字符但你直接發(fā)到聊天框里對(duì)方看到的就是反斜杠加一串?dāng)?shù)字。真正能發(fā)出去變成表情的只有字符本身。所謂隱藏代碼大全絕大多數(shù)是把碼點(diǎn)表偽裝成了操作指南。注意看到任何教程讓你在微信輸入框輸入 U1F600直接關(guān)掉就行那玩意兒發(fā)出去就是一串 ASCII 字符。1.2 那為什么有人照著做真的成功了因?yàn)槟遣糠秩俗龅氖菑?fù)制粘貼不是輸入。碼點(diǎn)表和字符表往往并排放在一張圖里字符那一列是可選中的真實(shí)字符。選中、復(fù)制、粘貼到微信表情就出來了。整個(gè)過程跟代碼沒有半點(diǎn)關(guān)系純粹是字符搬運(yùn)。還有一種情況是輸入法的自定義短語(yǔ)。主流輸入法都支持設(shè)置觸發(fā)碼 → 輸出內(nèi)容你把觸發(fā)碼設(shè)成xh、輸出內(nèi)容設(shè)成 之后敲xh就能出圖。這才是真正意義上的敲代碼出表情只不過這個(gè)代碼是你自己定的跟 Unicode 一點(diǎn)關(guān)系都沒有。我在給社群做表情包整理的時(shí)候就是靠自定義短語(yǔ)解決的。把三十來個(gè)高頻表情做成兩字母觸發(fā)碼聊天效率提升非常明顯比每次翻面板快太多了。1.3 這套東西的適用邊界在哪先說清楚它能干什么讓你快速輸入冷門表情、讓你在昵稱簽名里塞進(jìn)特殊符號(hào)、讓你批量處理文本里的表情、讓你做聊天記錄分析。再說清楚它不能干什么。它不能突破平臺(tái)的輸入限制不能讓你發(fā)出別人看不到的隱藏消息也不能保證同一個(gè)碼點(diǎn)在所有人手機(jī)上長(zhǎng)得一樣。最后這條特別重要。同一個(gè)碼點(diǎn)在 iOS、Android、Windows 上渲染出來的圖案可能完全不同甚至同一個(gè)系統(tǒng)的不同版本都會(huì)變。你精心挑了一個(gè)看起來最可愛的表情發(fā)出去在別人那兒可能是個(gè)方框。這個(gè)坑后面會(huì)單獨(dú)講。2. Emoji 的底層結(jié)構(gòu)一個(gè)表情不等于一個(gè)字符想搞懂對(duì)照表得先接受一個(gè)反直覺的事實(shí)你在屏幕上看到的一個(gè)表情在計(jì)算機(jī)里可能是 1 個(gè)字符也可能是 7 個(gè)、11 個(gè)字符。這個(gè)認(rèn)知我第一次撞上的時(shí)候挺震驚的。當(dāng)時(shí)寫一個(gè)長(zhǎng)度校驗(yàn)限制用戶輸入 20 個(gè)字測(cè)試同學(xué)輸入了四個(gè)一家四口的表情系統(tǒng)提示超長(zhǎng)。我盯著屏幕數(shù)了半天明明是 4 個(gè)圖形怎么就超了2.1 碼點(diǎn)、平面與 UTF-8 / UTF-16 的換算Unicode 把字符空間分成 17 個(gè)平面每個(gè)平面 65536 個(gè)碼位。我們?nèi)粘S玫臐h字、拉丁字母在第 0 平面BMP碼點(diǎn)范圍 U0000 到 UFFFF。Emoji 大部分在第 1 平面從 U1F300 開始往上這一片叫 supplemental symbolsBMP 之外的區(qū)域。這個(gè)位置決定了它在不同編碼下的存儲(chǔ)長(zhǎng)度編碼 (U1F600) 的表示占用UTF-8F0 9F 98 804 字節(jié)UTF-16D83D DE002 個(gè)碼元4 字節(jié)UTF-3200 01 F6 004 字節(jié)關(guān)鍵在于 UTF-16。它用 16 位表示一個(gè)碼元裝不下 U1F600所以發(fā)明了代理對(duì)Surrogate Pair用兩個(gè) 16 位碼元拼出第 1 平面之外的字符。高位代理范圍 D800–DBFF低位代理 DC00–DFFF。換算公式得記住做底層處理繞不開給定碼點(diǎn) cpcp 0xFFFF high 0xD800 ((cp - 0x10000) 10) low 0xDC00 ((cp - 0x10000) 0x3FF)拿 U1F600 驗(yàn)算一下cp - 0x10000 0xF600右移 10 位得0x3D加0xD800等于0xD83D低 10 位0x200加0xDC00等于0xDE00。對(duì)上了。這個(gè)知識(shí)點(diǎn)為什么重要因?yàn)?JavaScript 的string.length算的就是碼元數(shù)不是字符數(shù)。 在 JS 里length是 2在 Python 里len()是 1Python 3 按碼點(diǎn)算。同一個(gè)字符串兩門語(yǔ)言報(bào)出兩個(gè)數(shù)字跨語(yǔ)言對(duì)接的時(shí)候能坑死人。2.2 變體選擇符那個(gè)看不見的 FE0F有些字符天生可文可圖最典型的是 ?U2600。它既可以是純文本符號(hào)也可以是彩色表情。決定它長(zhǎng)什么樣的是后面跟的那個(gè)UFE0F。U2600單獨(dú)出現(xiàn) → 系統(tǒng)按文本渲染通常是個(gè)細(xì)線條的黑色太陽(yáng)U2600 UFE0F→ 強(qiáng)制按 emoji 渲染變成彩色UFE0F叫變體選擇符-16Variation Selector-16是個(gè)零寬字符肉眼完全看不見。這就解釋了一個(gè)高頻現(xiàn)象你從某個(gè)網(wǎng)頁(yè)復(fù)制了一個(gè)表情粘到微信里變成個(gè)黑白小符號(hào)怎么調(diào)都調(diào)不回來。原因就是復(fù)制的時(shí)候那個(gè) FE0F 被丟了。反過來還有UFE0EVS-15作用是強(qiáng)制文本渲染。想發(fā)個(gè)看起來不像表情的表情就用它。數(shù)字鍵帽那套也是同一個(gè)道理1?? U0031 UFE0F U20E3 數(shù)字1變體選擇包圍鍵帽三個(gè)碼點(diǎn)渲染成一個(gè)圖形。你要是把中間那個(gè) FE0F 刪掉某些系統(tǒng)就只顯示一個(gè)光禿禿的 1。提示做文本清洗的時(shí)候千萬(wàn)別無腦過濾不可見字符。FE0F、ZWJ、膚色修飾符都屬于這一類刪了表情就散架。2.3 ZWJ 與膚色修飾符長(zhǎng)度爆炸的元兇U200D叫零寬連接符ZWJ, Zero Width Joiner作用是告訴渲染引擎把前后兩個(gè)表情粘成一個(gè)。這是 emoji 組合的核心機(jī)制。一家四口那個(gè)表情 ZWJ ZWJ ZWJ 拆開算4 個(gè)人物表情每個(gè)是 2 個(gè) UTF-16 碼元共 8 個(gè)3 個(gè) ZWJ每個(gè) 1 個(gè)碼元共 3 個(gè)。合計(jì)11 個(gè)碼元7 個(gè)碼點(diǎn)但用戶眼里只有1 個(gè)字符。這種多個(gè)碼點(diǎn)組成一個(gè)視覺單位的東西專業(yè)叫法是字素簇Grapheme Cluster。判斷長(zhǎng)度的正確姿勢(shì)是按字素簇算不是按碼點(diǎn)更不是按碼元。膚色修飾符是另一套機(jī)制。U1F3FB到U1F3FF五個(gè)碼點(diǎn)對(duì)應(yīng)從淺到深的五檔膚色跟在人物表情后面直接生效 U1F466 → 默認(rèn)黃色小孩 U1F466 U1F3FB → 淺膚色 U1F466 U1F3FF → 深膚色注意這是緊跟不是 ZWJ 連接。寫錯(cuò)了沒用會(huì)渲染成兩個(gè)獨(dú)立字符。這幾種結(jié)構(gòu)疊在一起就出現(xiàn)了一個(gè)經(jīng)典的長(zhǎng)尾問題你以為限制了 20 個(gè)字實(shí)際上用戶輸入 4 個(gè)復(fù)合表情就超了你以為數(shù)據(jù)庫(kù)字段長(zhǎng)度夠?qū)嶋H上一條記錄光表情就占掉幾十個(gè)碼元。3. SoftBank、Unified 與各平臺(tái)編碼的對(duì)照關(guān)系現(xiàn)在進(jìn)入正題。為什么會(huì)有 SoftBank 這個(gè)東西3.1 私有區(qū)編碼是怎么來的時(shí)間倒回功能機(jī)時(shí)代。那會(huì)兒各家運(yùn)營(yíng)商各自搞了一套表情符號(hào)在自己的網(wǎng)絡(luò)和定制機(jī)之間傳。這些符號(hào)在 Unicode 標(biāo)準(zhǔn)里根本不存在于是被塞進(jìn)了私有使用區(qū)PUA, Private Use Area也就是 UE000–UF8FF 這一片誰(shuí)愛用誰(shuí)用、標(biāo)準(zhǔn)不管的區(qū)域。SoftBank 的映射就是這套歷史產(chǎn)物碼位集中在 UE001–UE05A、UE101–UE15A、UE201–UE253 等幾個(gè)區(qū)間。同期還有另外兩家運(yùn)營(yíng)商也各搞了一套碼位互不相同。后來 Unicode 官方開始收編表情把它們統(tǒng)一分配到了 U1F300 往上那一片正式碼位這套統(tǒng)一后的編碼就叫Unified。收編的過程中官方做了映射表把各家 PUA 碼位對(duì)應(yīng)到新的 Unified 碼位。所以兩者的關(guān)系是SoftBank 是歷史遺留的私有編碼Unified 是現(xiàn)在的標(biāo)準(zhǔn)編碼對(duì)照表就是一張舊地址 → 新地址的遷移表。有意思的是這個(gè)遷移不是一一對(duì)應(yīng)的。SoftBank 那套總共幾百個(gè)表情而現(xiàn)在的 Unicode 表情已經(jīng)超過三千個(gè)含各種組合。所以會(huì)出現(xiàn)一個(gè) SoftBank 碼位對(duì)一個(gè) Unified 碼位最常見多個(gè) SoftBank 碼位對(duì)同一個(gè) Unified歷史重復(fù)大量 Unified 碼位沒有SoftBank 對(duì)應(yīng)新增的表情3.2 對(duì)照表長(zhǎng)什么樣下面這張表是結(jié)構(gòu)示意列了我印象最深的幾個(gè)映射方便你理解字段關(guān)系。完整的映射有幾百行從開源數(shù)據(jù)倉(cāng)庫(kù)拉更靠譜。SoftBank (PUA)Unified (Unicode)字符名稱UE001U1F466boyUE002U1F467girlUE003U1F468manUE004U1F469womanUE005U1F46AfamilyUE04AU2600?black sun with raysUE04BU2601?cloudUE04CU1F319crescent moon讀這張表有個(gè)細(xì)節(jié)要注意U2600和U1F319都在 BMP 或者第 1 平面跟前面那些 U1F4xx 混在一起看不出規(guī)律。這是因?yàn)?Unicode 收編的時(shí)候是按語(yǔ)義分區(qū)不是按來源分區(qū)。另一件事SoftBank 碼位落在 PUA意味著它沒有標(biāo)準(zhǔn)字形。同一個(gè) UE001在舊設(shè)備上可能顯示成小男孩在現(xiàn)在的設(shè)備上大概率是個(gè)方塊或者問號(hào)因?yàn)楝F(xiàn)代字體根本不認(rèn)這個(gè)地址。這就是為什么老聊天記錄遷移到新系統(tǒng)里表情會(huì)集體變成豆腐塊。3.3 自己生成對(duì)照表比抄表靠譜網(wǎng)上流傳的對(duì)照表質(zhì)量參差不齊我見過至少三個(gè)版本在 UE04C 這一行對(duì)不上。與其抄不如自己拉官方數(shù)據(jù)生成。Unicode 官方在 emoji 數(shù)據(jù)倉(cāng)庫(kù)里放了幾個(gè)關(guān)鍵文件文件名內(nèi)容用途emoji-data.txt所有 emoji 碼點(diǎn)及屬性判斷某碼點(diǎn)是不是 emojiemoji-test.txt完整序列及限定狀態(tài)生成完整表情清單emoji-sequences.txt組合序列鍵帽、旗幟等處理多碼點(diǎn)組合emoji-zwj-sequences.txtZWJ 組合序列處理家庭、職業(yè)等復(fù)合表情emoji-test.txt的行格式是這樣的1F600 ; fully-qualified # E1.0 grinning face四個(gè)字段用分號(hào)和井號(hào)隔開碼點(diǎn)序列、限定狀態(tài)、字符本身、引入版本和名稱。限定狀態(tài)有四種取值fully-qualified是完整形式minimally-qualified是省略了 FE0F 的簡(jiǎn)化形式unqualified是完全省略component表示這是個(gè)組件比如膚色修飾符不能單獨(dú)用。做輸入聯(lián)想、做表情搜索都從這個(gè)文件入手最穩(wěn)。至于 SoftBank 那部分映射不在上面這幾個(gè)文件里得單獨(dú)找社區(qū)維護(hù)的對(duì)照數(shù)據(jù)。我這里給個(gè)建議如果你的場(chǎng)景是新建系統(tǒng)壓根不需要 SoftBank。它只在處理歷史數(shù)據(jù)遷移、解析老設(shè)備日志的時(shí)候才用得上。4. 動(dòng)手從數(shù)據(jù)整理到微信端落地光講原理沒意思下面是我實(shí)際搭過的一套流程從數(shù)據(jù)源到最終在聊天里用起來每一步都能復(fù)現(xiàn)。4.1 第一步把數(shù)據(jù)源拉下來清洗先從官方倉(cāng)庫(kù)拿到emoji-test.txt然后解析成結(jié)構(gòu)化數(shù)據(jù)。Python 處理這類文本特別順手import re PATTERN re.compile( r^(?Pcodes[0-9A-F ])\s*;\s*(?Pstatus\S)\s*#\s*(?Pchar\S)\s*E(?Pversion[\d.])\s*(?Pname.)$ ) def parse_emoji_test(path): items [] with open(path, encodingutf-8) as f: for line in f: line line.strip() if not line or line.startswith(#): continue m PATTERN.match(line) if not m: continue codes [int(c, 16) for c in m.group(codes).split()] items.append({ codes: codes, char: .join(chr(c) for c in codes), status: m.group(status), version: m.group(version), name: m.group(name).strip(), }) return items跑完之后你會(huì)拿到幾千條記錄。接下來做個(gè)篩選只保留fully-qualified。其他狀態(tài)在輸入框里發(fā)出去多數(shù)客戶端會(huì)自動(dòng)補(bǔ)全成完整形式你按簡(jiǎn)化形式存反而容易出問題。這一步我踩過的坑是沒處理版本。E1.0到E15.0跨度十幾年如果你的目標(biāo)用戶里有大量老舊安卓機(jī)把 E13.0 之后的新表情推給他們顯示出來就是空白。合理做法是按版本打個(gè)標(biāo)記前端根據(jù) UA 或者系統(tǒng)版本做降級(jí)。4.2 第二步編碼轉(zhuǎn)換的核心邏輯SoftBank 轉(zhuǎn) Unified本質(zhì)就是查表替換。邏輯簡(jiǎn)單到有點(diǎn)無聊SOFTBANK_TO_UNIFIED { 0xE001: [0x1F466], 0xE002: [0x1F467], 0xE003: [0x1F468], 0xE004: [0x1F469], 0xE005: [0x1F46A], 0xE04A: [0x2600], 0xE04B: [0x2601], } def softbank_to_unified(text: str) - str: out [] for ch in text: cp ord(ch) targets SOFTBANK_TO_UNIFIED.get(cp) if targets: out.append(.join(chr(c) for c in targets)) else: out.append(ch) return .join(out)注意 value 用的是列表而不是單個(gè)整數(shù)。原因前面提過少數(shù) SoftBank 碼位會(huì)映射到多個(gè) Unicode 碼點(diǎn)組成的序列比如某些帶修飾的組合。用列表能兼容兩種情況以后補(bǔ)數(shù)據(jù)不用改函數(shù)簽名。反向轉(zhuǎn)換就麻煩多了因?yàn)橛成涫嵌鄬?duì)一的一個(gè) Unified 碼位可能對(duì)應(yīng)多個(gè) SoftBank 碼位也可能一個(gè)都沒有。穩(wěn)妥做法是給每個(gè) Unified 碼位維護(hù)一個(gè)候選列表轉(zhuǎn)換時(shí)取第一個(gè)同時(shí)記錄無對(duì)應(yīng)的情況。def unified_to_softbank(text: str, reverse_map: dict) - str: out [] for ch in text: cp ord(ch) candidates reverse_map.get(cp) if candidates: out.append(chr(candidates[0])) else: # 沒有對(duì)應(yīng)原樣保留或替換成占位符 out.append(ch) return .join(out)實(shí)際跑歷史數(shù)據(jù)的時(shí)候無對(duì)應(yīng)的比例會(huì)高得嚇人。我處理過一批十年前的聊天記錄SoftBank 表情占比不到 15%剩下全是后來新增的 Unified 表情。所以如果你的遷移方向是老 → 新工作量很小如果是新 → 老基本沒法無損。4.3 第三步在微信里真正用起來回到最開始的問題。想在微信里快速發(fā)冷門表情有下面幾條路按我實(shí)際體驗(yàn)的順手程度排序。路子一輸入法自定義短語(yǔ)。這是最接近敲代碼出圖的方案。進(jìn)輸入法設(shè)置找到自定義短語(yǔ)或快捷輸入新增一條觸發(fā)碼填xh內(nèi)容填 。保存后在任何輸入框里敲xh候選欄第一個(gè)就是這個(gè)表情。我自己的碼表是這么設(shè)計(jì)的兩個(gè)字母第一個(gè)字母表示大類x笑、k哭、z贊、a愛第二個(gè)字母是細(xì)分。三十來?xiàng)l覆蓋了日常 95% 的場(chǎng)景敲起來比翻面板快。這套碼表跟著輸入法賬號(hào)走換手機(jī)也能同步。路子二系統(tǒng)級(jí)文本替換。iOS 在設(shè)置 → 通用 → 鍵盤 → 文本替換里安卓各家在語(yǔ)言與輸入法里都有類似功能。效果跟輸入法短語(yǔ)差不多區(qū)別是系統(tǒng)級(jí)替換對(duì)所有 App 生效包括那些不吃輸入法候選欄的場(chǎng)景。缺點(diǎn)是改起來麻煩得進(jìn)設(shè)置一層層翻。路子三微信自定義表情。把常用表情存成自定義表情會(huì)進(jìn)到表情面板的收藏Tab位置固定翻起來比在幾百個(gè)默認(rèn)表情里找快。適合那些一天用十次的高頻表情。路子四復(fù)制粘貼。最原始但對(duì)付一次性需求很好用。從系統(tǒng)字符面板iOS 長(zhǎng)按地球鍵、macOS 的 CmdCtrlSpace、Windows 的 Win句號(hào)里選比在網(wǎng)上找對(duì)照表靠譜得多。提示別信輸入特定字符組合會(huì)觸發(fā)彩蛋表情這類說法。真有這種機(jī)制也早就在版本更新里被修掉了。4.4 第四步長(zhǎng)度計(jì)算與截?cái)嗬@不開的坑前面鋪墊了那么多碼點(diǎn)、碼元、字素簇這里就是用武之地。假設(shè)你要做一條最多 50 字的輸入限制。用len()算碼點(diǎn)數(shù)用戶輸入乘以 12 組碼點(diǎn)數(shù)是 84提示超長(zhǎng)但用戶眼里只有 12 個(gè)圖形主觀感受是我才打了 12 個(gè)。這種體驗(yàn)落差會(huì)直接被投訴。正確做法是按字素簇算import regex def grapheme_len(text: str) - int: return len(regex.findall(r\X, text)) print(grapheme_len()) # 1 print(len()) # 7regex這個(gè)第三方庫(kù)支持\X元字符專門匹配字素簇。標(biāo)準(zhǔn)庫(kù)re不支持硬用會(huì)出錯(cuò)。JavaScript 這邊稍微麻煩點(diǎn)得用Intl.Segmenterconst seg new Intl.Segmenter(zh, { granularity: grapheme }); const s ; console.log([...seg.segment(s)].length); // 1 console.log(s.length); // 11Intl.Segmenter在主流瀏覽器和 Node 16 都支持老環(huán)境得準(zhǔn)備 polyfill。還有個(gè)更隱蔽的坑截?cái)唷0创a點(diǎn)截?cái)嗪苋菀装汛韺?duì)劈成兩半產(chǎn)生非法字符。比如把的D83D留下、DE00砍掉結(jié)果是一個(gè)無法渲染的孤立代理。這個(gè)字符串存進(jìn)數(shù)據(jù)庫(kù)、傳給別人可能直接導(dǎo)致對(duì)方客戶端報(bào)錯(cuò)。穩(wěn)妥的截?cái)喾绞绞窍劝醋炙卮厍蟹衷偃∏?N 個(gè)最后拼回去。慢一點(diǎn)但不會(huì)出事。5. 常見問題與排查實(shí)錄這一節(jié)全是踩過的坑按出現(xiàn)頻率排序。5.1 顯示成方塊、問號(hào)、空白這是最高頻的問題原因至少四種得逐個(gè)排。原因一碼點(diǎn)超出接收端支持范圍。對(duì)方系統(tǒng)版本老字體里沒有這個(gè)字形就顯示方塊俗稱豆腐塊。Unicode 15.0 之后新增的表情在兩三年前的設(shè)備上基本都不認(rèn)。判斷方法把同一個(gè)表情發(fā)給不同系統(tǒng)的設(shè)備如果只有部分出問題就是這個(gè)原因。沒解只能降級(jí)用老表情。原因二變體選擇符丟失。前面講過?少了UFE0F就從彩色變黑白1??少了U20E3就退化成普通數(shù)字。這類問題肉眼看著沒壞但不對(duì)容易被忽略。原因三PUA 字符沒做轉(zhuǎn)換。老數(shù)據(jù)里殘留的UE001這類私有區(qū)碼位現(xiàn)代字體一律不認(rèn)全是方塊。排查方法很簡(jiǎn)單把字符串按碼點(diǎn)拆開看有沒有落在UE000–UF8FF區(qū)間的有就說明需要跑一遍轉(zhuǎn)換。原因四編碼不匹配。UTF-8 字節(jié)流被當(dāng)成 Latin-1 解碼會(huì)出現(xiàn)e和一堆亂碼。這個(gè)特征太明顯一般不會(huì)認(rèn)錯(cuò)。5.2 數(shù)據(jù)庫(kù)存儲(chǔ)字符集是第一道關(guān)MySQL 用utf8字符集注意不是utf8mb4存 emoji會(huì)直接報(bào)錯(cuò)或者存成????。因?yàn)?MySQL 的utf8實(shí)際是utf8mb3最多 3 字節(jié)而第 1 平面的 emoji 需要 4 字節(jié)。改法ALTER TABLE chat_messages CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;改完之后還有兩個(gè)連帶問題。一是索引長(zhǎng)度。早期 MySQL 版本單列索引最長(zhǎng) 767 字節(jié)utf8mb4一個(gè)字符占 4 字節(jié)所以 varchar 索引最多 191 個(gè)字符。這就是那個(gè)著名的191 索引長(zhǎng)度問題的來源。現(xiàn)在主流版本默認(rèn) 3072 字節(jié)基本不用管了但如果接手老庫(kù)還是可能撞上。二是排序和比較。不同 collation 對(duì) emoji 的處理不一樣做按表情聚合這類需求時(shí)utf8mb4_unicode_ci和utf8mb4_0900_ai_ci的結(jié)果可能不同。我一般統(tǒng)一用后者M(jìn)ySQL 8.0 默認(rèn)值行為更符合直覺。5.3 問題速查表把上面這些整理成一張表出問題時(shí)對(duì)著查現(xiàn)象最可能原因排查方法處理方式發(fā)出去是方框接收端無該字形換設(shè)備交叉驗(yàn)證降級(jí)用低版本表情黑白與彩色不一致缺 FE0F打印碼點(diǎn)十六進(jìn)制補(bǔ)上 UFE0F鍵帽不對(duì)勁缺 20E3 或 FE0F同上補(bǔ)全三碼點(diǎn)序列數(shù)據(jù)庫(kù)存成問號(hào)字符集非 utf8mb4SHOW CREATE TABLE改字符集截?cái)嗪笳麠l消息異常代理對(duì)被劈開檢查孤立代理項(xiàng)按字素簇截?cái)嚅L(zhǎng)度校驗(yàn)誤判按碼元計(jì)數(shù)對(duì)比碼元數(shù)與字素簇?cái)?shù)改按字素簇算老記錄全是方塊PUA 未轉(zhuǎn)換查碼點(diǎn)是否在 PUA跑 SoftBank 轉(zhuǎn)換5.4 我自己踩得最慘的一次說個(gè)具體的。早期做聊天記錄導(dǎo)出我寫了個(gè)清理不可見字符的函數(shù)用的是白名單之外一律過濾的邏輯。上線之后用戶反饋所有一家三口類的復(fù)合表情都變成了三個(gè)人分開站著中間還多倆空格。原因就是把U200D當(dāng)成了不可見字符給刪了。ZWJ 確實(shí)是零寬的但它承擔(dān)的是連接語(yǔ)義刪掉之后組合就散了。后來我把白名單改成了只過濾 U0000–U0008、U000B–U001F 這些真正的控制字符其他一律保留。另外加了一條規(guī)則任何對(duì)文本的壓縮、去重、清洗都要在字素簇層面做不能碰單個(gè)碼點(diǎn)。這件事之后我養(yǎng)成了一個(gè)習(xí)慣凡是處理文本的代碼測(cè)試用例里必帶三種數(shù)據(jù)——一個(gè)普通 emoji、一個(gè) ZWJ 復(fù)合表情、一個(gè)帶膚色的表情。三個(gè)都過了才算過。還有一個(gè)偏門的經(jīng)驗(yàn)微信的昵稱和簽名對(duì)表情的支持比聊天框保守。有些在聊天里正常顯示的表情放進(jìn)昵稱會(huì)顯示成問號(hào)或者被截?cái)唷N乙话憬ㄗh用 Unicode 6.0 之前的老表情兼容性最穩(wěn)。6. 關(guān)于對(duì)照表最后說幾句實(shí)在話我把Emoji隱藏代碼這件事拆到現(xiàn)在結(jié)論其實(shí)有點(diǎn)掃興真正有用的不是那張表而是背后的數(shù)據(jù)處理能力。對(duì)照表是一次性消費(fèi)品抄完就完事了而且大概率抄來的版本有錯(cuò)。但只要你理解了碼點(diǎn)、代理對(duì)、字素簇這三層結(jié)構(gòu)遇到任何表情顯示異常長(zhǎng)度計(jì)算不對(duì)截?cái)喑鰜y碼的問題都能自己定位。至于微信這條鏈路最實(shí)用的技巧說出來可能讓人失望——配好輸入法的自定義短語(yǔ)比任何對(duì)照表都管用。我自己的碼表用了三年中間只調(diào)整過兩次一次是加了幾個(gè)新的一次是刪掉了幾個(gè)總打錯(cuò)重碼的。這套東西一旦配好聊天效率的提升是實(shí)打?qū)嵉谋仁詹匾话購(gòu)垖?duì)照長(zhǎng)圖強(qiáng)。如果還想往下擴(kuò)展有兩個(gè)方向值得琢磨。一是把表情按語(yǔ)義標(biāo)簽重建索引比如把所有情緒-正向的表情歸一類做搜索的時(shí)候按情緒找比按名字找符合直覺。二是做版本適配層根據(jù)客戶端版本動(dòng)態(tài)決定用哪套表情這個(gè)在跨端產(chǎn)品里遲早要面對(duì)。這兩個(gè)話題都能單獨(dú)寫一篇今天就不展開了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日本污ww视频网站| 91老熟女| 亚洲欧洲小说图片视频 | 欧美日韩传媒| 东京热熟女亚洲视频网站| 日韩人妻播放| 深夜国产一区二区三区在线看| 久久9999| 91AV天堂| 日韩性色b| 中文字幕免费看大片| 91性片| 91色爽欧美| 爱媛媛久久国产福利| 人人妻人人爱人人玩| 日日夜夜国产综合| 91啪9色| 中文字幕aⅴ在线视频| 91丨人妻丨国产丨丝袜| 欧美啪啪啪91| 夜夜国自区| 97综合国产精品高潮久久| 午夜无码精品免费看性色| 中文字幕后石码四区五区| 国产欧洲精品亚洲午夜拍精品| 97色冈| 国内三级自拍小视频在线观看| ,成人免费啪啪视频| 熟女少妇视频| 超碰97伊人| 九九九成人| 亚洲精品白丝| 九九热精品视频六| 亚洲狠| 97免费视频在线| 亚洲熟女一区| 我中文字幕6区| 抽插爽| 2010男人的天堂| 色婷婷九月天天综合 | 日韩一区二区熟女| 91爰爱欧美| 一区二区三区 丝袜 高跟 美腿| 国产精品99久久久www| 人妻中文字幕精品无码| 天天懆天天日| 丰满人妻一区二区三区四区| 自怕偷自怕亚洲精品| 国产探花日韩援交| 可能人人看人人摸| 亚洲 一区二区 自拍| 亚欧免费| 国产一进一出视频网站| 成人无码电影在线观看网| 超碰在线人妻中文字幕| 大香蕉专区| 国产日韩欧美中文在线播放| 淫荡少妇免费| 五月香婷婷| 中文一区二区婷婷视频| 日韩欧美~中文字| 亚洲日本大香蕉1| 色香欲天天天天综合色| 国产丁香精品露脸视频 | 日逼视频日本| 综合自拍| 这里是精品| 97这里都是精品| 美女干逼2| 中韩中文字幕在线观看| 超碰95| 无码高清少妇久久| 欧亚性爱视频免费看| 黄片不用下载在线观看| 久草成人福利导航| 伊人久久久日韩一区| 超碰1997| 亚洲成人激情小说视频| av日韩国产一区二区| 肏逼福利网站| 激情九月婷婷| 久久日本熟妇熟色高清| 美女天天干| 日韩欧美成人综合在线| 国产人妻天天干精品| 五月激情天| 亚洲一区二区三区麻豆传媒| 久久久久久人体| 国产操逼网站亚洲一级黄色| 亚洲精品无码少妇久久| 欧美性爱一区二区三区四区| 国产一区二区免费福利片| 97任你吞精| 国产 日韩 欧美 人妻 熟女 中文| 日韩精品人妻中文字幕有码午| 乱子伦一区二区三区国产精品| 蜜桃臀AV在线| 亚川综合视频| 九九综合色| 青青操在线亚洲视频观看欧美在线 | 在线观看综合精品亚洲| 国产性感在线观看| 日日夜夜骑| 精品国产丝袜一区二区三区乱码 | 很黄很污的免费网站| 深夜激情 | 熟妇女伦乱视频| 日韩免费福利在线观看| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 一起草精品人妻| 有码人妻系列| 午夜一区| 97福利视频| 污电影在线观看| 亚洲影院无码在线| 欧美性,色九九| 中文字幕视频在线观看| 亚洲Av无码成人精品国产| 国产精品乱码久久久久久久久久久久| 亚洲欧美清纯| 色婷婷狠狠18禁| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 乱伦熟女专区| 精品少妇后入一区二区三区四区人妻巨乳| 亚洲风情综合网| 17c嫩草51久久91嫩草| 亚洲成?V人片在线观看福利| 校园春色中文字幕AV| 一二三区操逼国产91| 九九热超碰| 人人妻人人色一区二区三区| 桃色五月天| 男人的天堂久久| www.av在线观看| 97超碰超欧美。| 九九热久久99精品re| av在线人气| 操国产逼| 99久在线精品99re8a| 国语对白露脸XXXXXX| 欧美久久草熟女| 无码人妻1727| 国产人妻精品久久久一区二区三区 | 日韩欧美麻豆大片| 飘花国产午夜精品不卡| 久久久久久九| 亚洲图片欧美91N| 午夜美女福利视频| 97精品一二区| 国内精品久久人妻性色av| 东北女人av| 亚洲一区在线观看欧洲| 国产熟女精品区| 亚洲无码?第一页| 屁股久久久久久久久| 色香色欲天天综合网天天来吧 | 免费看黄视频亚洲网站| 男人天堂无码| 99激情| 一级做受视频免费是看美女| 97精品97| 国产欧美一区激情交| 97色在线视频| 青青国产在线拍揄自揄拍| 91美女在线| 嗯嗯,啊啊,国产精品| 色波多| a片亚洲一本通视频| 欧美日韩国内不卡| 日本不卡二区| 爱欲AV| 国产极品99热在线播放69| 久久久久久无码人妻中文字幕| 去干网最新版| 97欧美性爱| 亚洲无码com| 久久影视二区三区行押| 久久久999网站| 强奸乱伦大香蕉| 中国91AV| 亚洲最大91网| 精品人妻一区二区视频| 人妻精品一区二区| 91伊人久久在线| 午夜无码熟妇丰满人妻| 五月天婷婷综合网| 久久91视频| 久久久偷拍| 60秒免费小视频| 亚洲综合激情五月久久| 欧美日韩国产三级黄色| 亚洲 欧美 制服 另类 自拍| 天久久久噜噜噜久久国产精品爽爽 | 亚洲综合中文字幕有码| 午夜精品99久久久久传媒| 97爱爱影院| 日本影视久久免费| 精品一区二区三区蜜桃臀赵总| 午夜福利激情在线视频| 欧美片第一页| 不卡av免费在线网址| 女人香蕉久久毛毛片精品| 天堂涩涩| www被窝色com| 伊人伊人LD| 欧美视频在线第3页| 人人摸人人添人人操| 九九九精品| 97神马久久| 97爱啪| 蜜桃一区二区三区| 97超碰国产亚洲精品| 曰本精品久久久| 97超碰国产精品| 精品性爱一区二区| 一级特级aaaa毛片免费观看| 中文字幕一区二区无码成人| 91成人无码| 日韩久射综合| 欧美 日韩第一性色| 超碰1997| 熟妇女伦乱视频视频| 九九自拍伦理| 97久久国产亚洲精品超碰热| 日产成人久久| 亚洲国产ⅴ高清在线观看| 亚洲天堂男人的天堂| juliaann丝袜| 69av一区二区三区| 午夜无遮挡男女啪啪视频| 中文字幕黄片在线| 中文字幕在线观看永久| 久久性爱网站| 九热视频| 一区二区三区网站日日骚| 精品一区二区三区最新| 综合网亚| 蜜臀99久久精品| 超碰97人人乐| 91美女在线观看| 欧美性爱一区二区| 91一区二区三区蜜桃| 国内毛片热久久思思热| 国产精品婬乱一级毛片彝族| 人人摸人人摸人人干| 搡老女人老妇女AAA一VU麻豆| 亚洲少妇综合在线播放| 欧美人妻精品一区二区| 91久久久久久久| 人妻丝袜无 码视频专区| 可以免费观看的AV| 免费看污网站| 美女诱惑在线一区| 日日日日做夜夜夜夜做无码97| 亚洲好色人妻| 亚洲无码精品AV久久久| 国产成人精品日本亚洲语言| 国产亚洲一黄| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲无无码αⅴ每日更新| 欧美性爱无码一区二区三区| 囯产乱伦一区二区三女| 老女人日韩美91| 亚州色图片在线色| 九九九九九九九精品视频| 色五月首页| 手机av天堂久久久久| 粉嫩少妇自慰在线| 天天综合97| 日韩精品一区二区日韩| 四虎 精品 WWW| 久久久久网站-538在线视频-欧美永久乱码 | 国产精品日日摸天天碰| 亚洲色图A| 五月婷婷丁香六月丁香| 五月天偷拍| 亚州欧美一区| 亚洲人精品久久久| 欧美黄色大片在线观看 | 2018天天干在线视频| 八人操人人摸人人看| 亚洲av在线免费观看| 中文日韩欧美熟| 欧美人体性爱互联网第一页婷婷日本| 九九热超碰| 韩国嫰模上门援交视频| 中国农村熟妇毛片视频| 1024日韩| 亚洲欧美啪啪| 377p欧洲日本亚洲大胆| 97青青操视频| 在线中文字幕| 亚洲91av| 亚洲婷婷丁香在线| 夜夜操狠狠操| 亚洲天天精品| 天天视频综合在线观看视频| 青青草日韩免费观看高清在线| av天堂电影网| 综合网色| 肥臀熟女一区二区三区视频| 秋霞网—男女啪啪亚洲免费体验区| 欧美96交| 99久久精品无码一区二区| 亚洲吊色| 日本高清视频xxxx| 欧美亚洲AN| 香蕉黄色一级视频| 97视频620| 日本性爱视频一级| 中文一区二区婷婷视频| 无码高清操逼| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 精品99999| 欧美天天综| 九一屌逼| 久热69九色熟妇97| 碰碰在线视频| 一区二区你上我| 九九热最新| 色综合色| 精品久久久久,69国产成人精| 蜜臀AV秘一区翔田千里| 九九九网站| 9999九九九久久久| 人妻密肉在线观看| 亚洲精品欧洲精品| 91色色综合| 天天综合~91| 久久久久久久91| 欧美性少妇| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 四虎午夜影院| 操逼999| 屁股久久久久久| chaopen97久久| 和协影院中文字幕三区| 久久欧洲| 欧美丝袜91| 欧美亚洲日本激情在线| 熟妇高潮精品一区二区三区下载| 免费试看60秒| 黑人无码一区二区| 天美传媒AV在线| 手机在线人成免费视频| 黑人免费福利视频| 一区中文字幕二区日韩| 丰满人妻大屁一区二区| 成人小说视频在线精品欧美| 天堂网亚洲区手机版| 蜜桃久久久久久| 久久riav中文精品| 1区2区3区视频| 国产精品天干天干综合网麻豆 | 亚洲中文字幕一区| 九九九九九九亚洲| 日韩精品区二区三区不卡| 伊人久久综合影院| 亚洲国产欧美一区二区潘金莲| 97视频一区| 久久草视频污视频| 国产精品网站www| 精品视频久久久久九九九九9999 | 国产少妇高潮| 亚州综合色图| 天堂资源站| 日韩pv中文| 1024人妻| 日本三级韩三级99久久| 91蜜桃婷婷狠狠久久综合9色| 第四色奇米影视777| 久九九九| 8050午夜少妇无码| 亚洲国产精品无码AV在线| 乱性AV| 欧美狠狠| 豆花视频操逼网址| 久久无码一区二区二三区性色| 青青久久艹| 欧美 色 亚洲| 91欧美情色| 九九九偷拍| 99精品无码| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 综合色啪| 天天爽天天爽| 亚洲情色第一页| 精品久久視頻在线| 成人AV素股で擦久久| 99久久无色码| 亚洲瓯美色图| 超碰碰小说97| 啊啊啊轻点在线观看| 91九色丰满高潮| 十八禁黄色| 大香蕉狠狠爱| 岛国黄片网站| 成人七区| 五月天丁香| 美女啊啊啊啊啊啊啊| 嗯嗯嗯啊啊啊在线免费观看| 夜夜爽妓女| 天天综合网1| 日本性一区| 日韩99999| 超碰97网站| 国产高清精品一区二区三区毛片| 91在线精品| 99热在线观看| 亚洲第一色页夜| 亚洲超碰综合网| 亚洲丝袜二区在线| 无码高清少妇久久| 亚洲免费人妻在| 欧美色偷拍| 欧美视频激情久久久久久| 少妇熟女视频一区二区三区| 中文乱码字幕观看| 99精品欧美一区二区三区桃色| 国产三级日产三级韩国三级| 夜夜操夜夜爽夜夜高潮| 九九九九97| 97无码视频在线播放| 国产高清免费不卡av| 欧美激色| 香蕉综合网| 欧美性爱日韩性爱| 超碰97欧美在线| 久草在| 人妻第一页| 啪啪啪东京| 五月婷婷综合在线| 久久久内射良家| 97无码视频在线播放| 五月综合婷婷久久网站| 色综合加勒比四四季| 亚洲第二页| 操人人| 亚洲夜色在线| 日韩欧美中文字幕搭讪巨乳美人妻视频| 思思久热在线精品66| HEYZO高无码国产精品227| 国产精品久久9| q2午夜理论片夜色av| 久久亚洲中文字幕视频| 超碰三级秋霞| 久久久精品,3| 极品极品色影院| 久久亚洲熟妇在线视频| 欧美裸体美女日麻屄| 久精品无码av一区二免费国产在线观看 | 久久骚| 看免费的黄片| 中文字幕一二三区| 久久夜夜| 精品久久久久9999| 国产9区| 99少妇精品视频| 91亚洲欧美激情| 亚洲一区二区中文字幕| 自拍亚洲综合| 国产精品自在线发布| 色天堂综合| av在线播放国产一区| av婷婷色网| 欧美亚洲激情| 日韩情色视频| 成人线上超碰| 成人精品视频一区二区| 久久久久久久强迫| 免费看污网站| 久久不卡一区二区 | 翘臀vidoes| 欧美人妻少妇| 色月天AV导航| 日本三级网页| 天天影视91看看| 一起草AV| 欧美视频一| 久久999久| 欧美偷拍区| 九九综合网| 国产18精品亚洲精品| 久久影视二区三区行押| 十八禁啪啦拍视频无遮挡| 99在线观看视频在线高清| 中日高清无码操逼视频| 97日亚洲欧美| 精品乱子一区二区三区99| 啪啪视频亚洲第一| 黑人精品欧美一区二区蜜桃| 亚洲性爱高潮影院| 国产福利一区二| 九九拍拍精品视频在线播放 | 日本曲间由美性生活片| 眼镜人妻101.com| 婷婷久草| 亚洲.欧美.丝袜.中文.综合| 蜜乳成人AV| 玖日综合网| 日本一区三级韩国| 无码高清专| 国语精品对白| 中文字幕视频2区| 黄色一区二区秘书性感| 精品人妻一区二区三区免费视频| 99999精品成人| 色哟哟511老熟女| 亚洲情色视频| 人妻内射一区二区在线视频| 夜夜操2028| 美女写真| 日本操逼视频在线| 天美av在线| 日夜久久久九九九久| 人人做人人妻人人夜视频| 亚洲精品97| AV色五月天| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 久久成年精品| 嗯嗯嗯啊啊啊在线免费观看| 日本一级二级三级网站| 中文乱码字字幕在线第5页| 精品少妇人妻一区二区三区| 成人日本精品九区| 人妻啊啊人妻啊啊| 欧美日韩性爱视屏免费看了| 99re热有精品视频国产| 亚洲欧美精品一区天堂久久 | 久久精品人人做人人看| 亚洲se91| 97色欧洲| 91在线一起| 日本男人插女人的逼黄色| 欧美夜夜狠| 乱伦熟女区| 天天操天天射天天日| 男啪女色黄无遮挡免费观看| 青青五月天| 99热国产| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 色综合一区二区三区| 伊人网在线点播| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 美女超碰978| 静品嫩模一区二区| 国产成人精品日本视频| 91天堂色男人的天堂| 韩国手机不卡无码三级视频| 18禁看网站一区| 亚洲九九九九| 亚洲无992tv| 亚洲色图欧美色图另类图片| 综合夜夜| AVE乱伦| 欧美影院一区二区三区| 久久午夜色播影院免费高清| 国产精品操| 91色拍| 在线观看中文字幕| 丁香色狠狠色综合久久小说| 国产亚洲精品一区二区三区| 一区二区三区免费视频入口| 欧美福利视频啊啊啊啊| 国产av激情无码久久天堂| 影音先锋每日最新资源在线观看 | 欧美综合娱乐久久| 人人摸人人添人人操| 在线视频免费播放一区| 亚洲AV永久无码一区仙野| www.国产高潮精品| 婷婷综合久久| 又大又黄国产| 国产精品。| 熟妇激情| 奶水 人妻 哺乳 在线| 少妇一区二区三区| 国产亚洲精品久久久久小| 无码天天操| 熟女人妇一区二区三区| 超碰免费在线| 亚洲综合网图| 久久久少妇诱惑精品视频| 美女91网址 | 99色在线视频| 亚洲色9| 日韩人妻精品| 俄罗斯及免费在线看| 成人性爱av| 久久美女福利是上海美女| 看日韩美女二区三区免费操逼视频| 欧美久久九九| 肉丝无码中文高清| 97aiaiai| 嫖老熟女A片一二三区| 欧美综合骚| 久久人妻少妇| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 国产精品久久久久久久久久久久久久吹 | 久久成人午夜狠狠| 久久久久亚洲| 手机在线观看不卡无码av| 亚洲欧美校园另类春色| 综合色久欲| 2018天天日天天日| 色999;丁香五月| 久久国产对白激情浪潮| 99av| 国产又色又爽又舒服的三级视频| 97干色天堂| 狠狠爱夜夜| 成人三一级一片aaa| 亚洲情色五月天 | 爱av免费| 亚洲在高跟鞋自慰久久在色线| 国产精品一区二区三区免费视频| 日本性爱不卡视频| 欧美韩国你懂得在线 | 自拍第一页| 亚洲欧洲中文日韩女优乱码| 天天插天天射| 五十路熟女,国产欧美精品区一区二区三区| 91美女视频| 热久久这里只有精品| 美女爽爽爽刺痛洞洞| 涩综合导航| 台欧久久精品视频| 91欧美综合| 五月丁香婷婷色| 久久久三区二区一区| 亚洲一区二区三区播放在线| 大吊色| 国产自制av蜜乳| 校园春色 男人天堂| aV中文麻| www久久久| 亚洲色性| 天天干少妇| 老女人综合| 九月色婷婷| 超碰97男女| 男人的天堂不卡一区二区| 亚洲高潮影院| 婷婷五月在线视频| 亚州性色| 青青青操| 欧美性爱第一页久久| 天天亚洲综合| 亚洲 日本 国产 综合| 伊人玖玖网| 天天躁日日躁xxxxx| 色大香蕉97N| 乱伦AVxx| 校园激情狠狠四射| 欧美综合骚| 日本伦乱九九九综合| 亚洲国产剧情少妇激情| 国产高清吃奶免费视频网站| 2017大香蕉国产精品久久| 亚洲精品无码成人久久久99| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 很很干很很操| 立川理惠被中出无码| 97色色色综合网站| 操逼啊啊啊91| 久久久久久久久久久久97 | 欧美性性性| 有码免费观看| 久久亚洲AV无码专区首页| 国产精品动态一区二区三区四四| 在线性黄高清免费视频| 蜜臀久久99精品久久久久久婷婷| 青青草九九九九九| 天天操夜夜操狠很操| 试看60秒| 天堂精品在线| 久久性爱精品一区| 91欧美情色| 7月婷婷综合| 乱欲一区二区| 2017天天拍大香蕉| 嗯嗯啊啊好疼| 久久XX| 亚洲乱色熟女一区| 91欧美少妇| 蜜臀亚洲中文| 精品人妻美妇91job| 亚洲?V高清一区二区三区尤物| 97精品视频免费| 日韩精品亚洲专区在线影视| 国产一国产一级毛片古装| 使劲用力艹少妇视频一区二区| 超碰在线国产| 国产亚洲性生活视频播放| 国产超碰97| 97资源欧美| 丁香六月天| 午夜福利在线合集| 久久久999| 亚洲色天堂九9| 亚州色站 日韩电影| 天天肏夜夜肏| 国产精品69人妻无码久久久| 精品九九| 91观看 国产白丝| 亚洲宗合网| 欧美亚男人的天堂| 天天爽天天干| 性爱乱伦网址| 亚洲图片婷婷五月天| 花花AV导航| 综合网亚洲1| 91挑色欧美| 久久人妻97久久久久久久| 激情综合婷婷| 婷婷中文网| 久久av一级av少妇av高潮| 国产一区二区二区按摩精品啪视频| 少妇熟女视频一区二区三区| 使劲用力艹少妇视频一区二区| 精品大久久| 久久极品一区二区| 欧美激情综合| 99热99色| 久久久五月天| 人人看人人摸人人色| 岛国黄| 亚洲欧洲综合av在线| 亚洲乱码精品一区二区| 97欧美| 九九九九国产| 97干色| 天天躁日日躁狠狠躁| 中文字幕第2页| 青青青青青手机视频| 久夜操| 欧美精品激情| 射综合网| 日本成人在线不卡一区二区三区| 69麻豆天美| 密乳视频在线| 香蕉国产精品麻豆亚洲欧美日韩| 欧美一级在线观看成人| 精品一区二区三区国产| 国产无码精品无码| 婷婷干黄色| 久久首页| 国模少妇一区二区三区 | 久久在肏| 黑人娇小av在线播放| 水多多映视AV| 成人无码在线视频网站| 亚洲国产精品9999在线观看| 久操网无码在线| 国产乱码精品一区二区三区四川| 日韩一级特黄av毛片| 美女主播色欲91抠b在线播放| 国产精品视频电影| 欧美熟女妇同| 天天躁夜夜躁狠狠躁AV| 久伊人网78| 亚州一区二区| 伊人久久综合影院精品久久久| 激情五月综合开心五月| 3028国产精品| 天天综合精品| 青青草在线视频欧美| 日本中文字幕熟妇| 久操免费观看| 啪啪啪东京| 国语av最新自产拍在线观看| 丁香六月婷婷久久综合| 午夜天堂精品久久| 天天综合网合集91| 综合夜夜| 久干9操| 99精品久久| 五十路熟女工口| 九九久久国产精品怡红院| 蜜臀99久久| AV污污污污| 亚洲不卡AV在线| 亚洲色悠悠久久88| 精品久久久久综合无码| 无码 黑人一区二区三区| 欧美黄色片AAAAA| 综合网久久| 一本大道青青| 亚洲综合另类小说色区亚洲成av人片在www | 尤物AV免费网站| 天堂v无码免费视频| 亚洲欧美在线观看2021 | 精品人妻免费观看| aⅴ日韩成人电影av在线免费看av大全| 丝袜美腿诱惑亚洲欧美视频在线观看| 亚洲吊色| 亚洲天堂一区| 99久久久久| 大香蕉综合在线| aa片毛片| 欧美婷婷| 91精品操美女| 亚洲av综合色| 超碰 另类 欧美 | 欧美疯狂做爰xxxx| 精品176精品2| 激情文学88| 五月综合视频| 91天堂丝袜美腿| 色色色色日本| 第45页一区二区| 亚洲超碰97| 天天插天天干| 偷偷人人精品女女久久| 殴美大黄片| 欧美日韩国产人人| 熟女这里只有精品6| 神马视频久久久久久| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 日韩色图 一区二区| 国内精品久久人妻性色av| 亚洲图片欧美91N| 九九九九九九九九九国产精品| 思思热免费视频观看| 啊啊啊啊啊啊啊在线| 精品国产91av一区二区三区 | 免费日韩黄片| AV老汉| 狠狠久久手机视频精品| 精品国产嫩穴视频| 人人操人人摸人人骑| 嗯嗯嗯好爽| 久久午夜色播影院免费高清| 亚洲精品一区中文字幕乱码| 久久丝袜| 国产少妇与亚洲av| 亚洲av青草久久一区二区| 欧美性猛交美女自慰91| 97视频在线免费观看| 18一区二区三区| 草草草视频在线免费看| 不卡人妻少妇精品毛片一区23区视频| 久久专区| 99综合自拍| 超碰在线香蕉| 少妇特黄一区二区三区| 欧亚免费视频| 水滴偷拍| 香蕉一区二区三区在线视频| 黄色操人| 四虎在线观看网站| 日本午夜久久电影| 美女91AV| 欧美日韩国产男人| 日本成人电影资源网| 97中文综合| av优播| 精品毛片av一区二区| 亚洲日本天堂| 五月丁香综合| 精品国产三级av韩国在线| 久久久久久久久久久999| 欧美亚洲日本视频久久久| 欧美日韩制服| 国产一区麻豆免费观看| 美國A片| 久久啊啊| 亚洲精品1区| 狼人久草| 免费av在线播放二区| 天天热精品| 天天综合网国产| 日日噜噜夜夜狠狠视频无| 91精品国| 91偷拍欧美亚洲| 一区二区视频在线播放| 国产精品扒开腿做爽爽爽视频| 男人的天堂va| 亚洲天堂自拍| 91九色精品熟女内射| 2023天天操夜夜操| 中文字幕无码不卡啪啪| 91人妻丝袜无码| 女人双腿搬开让男人桶| 欧美组图日韩亚洲中文字幕| 天欧美在线| 麻豆国产av网| 在线日韩视频| 黄片国产精品一区二区| 麻豆成人影音在线| 曰韩香蕉97| 热天堂一区二区| 欧美综合区| 国产家庭乱伦性爱视频| 亚洲在线91| 亚洲清纯唯美| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 中文字幕日产av人| 久久精品性| 国产欧美日韩一区二区三区| 中文字幕三四五区| 亚洲少妇激情一区二区三区| 亚洲日韩av一区二区三区百合| 国产成人无码久久精品| 欧美综合娱乐久久| 久久久97| juliaann欧美丝袜办公室| 精品久久艹| 九九英色视频| 夜夜肏2021| 97精品综合久久| 在线观看亚洲专区| www.久久制服糖| 人人操欧美风骚| 欧美色图91| 91青青| 久久色AV线| 九七毛片九九毛片| 97视频7| 国产精品久久久蜜臀| 97九色人妻| 91啪啪| 五月天丁香网| 欧美性爱精品一区二区| 约操熟妇| 激情网色| 欧美国产精品| 两女互慰AV高潮喷水在线观看| 中文字幕99999| 中文字幕精品码亚洲| 中文字幕乱妇免费视频| 少妇高潮九九九九九九九| 综合97久久| 亚洲AV不卡在线观看| 欧美第二页午夜| 色欧洲97| 一区二区播放| 全国男人天堂网| 久久日韩肥臀| 成人小电影网站tex| 亚州性色| 欧美人体性爱互联网第一页婷婷日本| 日本欧美不卡| 97免费在线观看| 欧差乱伦二三| 免费?级毛片无码?∨蜜芽试看| 精品人妻1区| 欧美一级特黄淫片在线观看| 欧美少妇性爱网站| JIZZJIZZ国产精品喷水| 久久久婷婷婷| 色老汉玖玖爱| 青青草大香蕉在线视频| 日本精品九九九| 操逼啊啊啊91| 丰满人妻av一区二区三区| 国产精品老师| 人妻加勒比东京热| 成人老鸭窝人人在线视频| 1204av韩国| 欧美日韩国产精品久久色婷婷| 亚洲狠狠入| 超碰免费97| 国产51色综合久久免费| 国产极品一区二区三区三州| 丁香五月婷婷啪啪| 亚洲AV乱码专区国产噜噜亚洲| 东北女人的毛片| 亚洲熟妇综合久久久久久| 97鸡把在线视频| 亚洲自拍偷拍视频在线 | 欧洲亚洲人人爽爽视频| 久草电影网| 亚洲在线网站| 国产女人91精品嗷嗷嗷嗷| 人人操av| baiduhicn.com。| 亚洲熟女诱惑| 久久久久久久久久久免费精品| 操逼网站视频漫画国产| 日本精品一区三区| #NAME?| 爱爱啊啊啊| 看一级特黄a大一片| 久久久一级| www.男人天堂| 欧美少妇色图| 日韩精品在线观看网站| 欧美大香蕉卡久久| 9997se| 亚洲中字幕日本一区二区三区| 太久视频| 中文字幕精品丝袜| 激情情色五月天| 国产精品成久久久久午夜午夜| 白嫩国模丰满一二三区| 宅男午夜在线视频| 久久亚洲日韩熟女精品| 亚洲高清无毛一区二区| 涩涩五月天| 久久视频,这里只有精品 | 91Chinese在线| 久久99草| 熟女探花啪啪| www超碰| 日韩大香蕉精品在线视频| 26uuu久久| 在线 制服丝袜中出 人妻| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 免费伦费视频在线观看| 嗯嗯,啊啊,国产精品| 麻豆色约约| 手机在线中文字幕国产| 精品久久久久黄少妇| 99re黄| 你懂得91| 久欲AV| 少妇3P性爱自拍| 天天碰操中国年青熟妇| 国产97视频| 日韩啪啪视频| 自拍第一页| 欧美人妻一区| 国产久久日| 亚洲精品国产日韩无码AV永久免| 日本91白丝| 高清孕妇孕交 交| 天天做天天爱| 韩日欧亚a级| 九色婷婷| 97操B| 在线播放成人网站| 大香蕉99re| 高清国产av无码| 偷拍亚洲情色| 日韩性爱播放| 九九九只有精品| 精品人妻美妇91job| 久久久96精品| 成人性爱电影一区二区| 中文字幕免费在线观看| 久久婷婷热| 91成人精品| 农村妇女一级二级三级视频| 色97干| 欧美熟爽综合| 天堂69亚洲精品中文字| 日日干夜夜操视频h| 欧亚无码视频| 亚洲激情天堂网| 18禁的网站在线| 国产中午字一暮区| 九九色综合| 国产熟女精品一区二区| 78p欧美| 91社操逼| 久久久久久99999国产精品| 久久性爱城| 五十路三区在线| 免费看污网站| 性爱边摸边日免费AV| 综合网亚洲1| 日本福利社| 日韩在线欧美精品一区二区| 麻豆国产成人精品| 亚洲成A∨人影院在线欢看| 亚洲区 欧美区| 91丝袜美腿网站| 影视综合无码少妇| 一级免费精品| 久久一二三四五六七八九区区区| 蜜桃狠狠色伊人亚洲综合网站| 欧美成人亚洲精品| 免费av大片| 东京热天堂网| 熟女网站最新| 九九九九久久久| 伊人丁香五月婷婷| 97久操| 91色综合激情| 欧美疯狂做爰xxxx| 午夜操一操| 我爱搞逼综合网| 嗯嗯啊在线视频| 人妻81p| 国色综合天| 91美女看B| 久久香蕉国产传媒一区剧情天美| 久久性生大片免费观看性| 亚洲男人天堂2013| 伊人综合色网| 亚洲国产麻豆一区二区三区| 亚洲97综| 青青青草原| 一区二区 电影 亚洲| 五月婷婷综合网| 成人七区| 国产成年女黄特黄| 综合色久欲| 久久成人国产精品| 桑老女人九区| 国产熟妇一区二区| 日韩精品一区二区三区四虎影视| 天天色,天天干,天天干| 亚州欧美色图| 亚洲图片视频小说| 99国产精品久久久在线播放| 看看小穴| 久久性爱城| 国产黄片在线免费观看| 成人精品在线免费视频| 东京男人天堂| 国产后入清纯| 日夜干射色啊| 日本免费不卡二区| 99精品在线| 精品超碰国产| 综合操逼| 草草影院日本第一页| 一级性爱视频免费观看| 亚洲天天更新| 欧美久久人体| 无码九九九九| 啊啊啊啊啊啊啊在线| 欧美色997| 99久久无色码| 俺去久久| 久久色人体| 水野优香在线观看| 狼人久草| 色欲久久综合| 亚洲欧美日韩夜夜| 91精品啪在线观看国产城中村| 亚洲欧洲综合成人av一区| 国产偷人伦激情在线观看| 日韩综合色图| 97超碰久久| 色香AV| 97超碰站| 秋霞色色影院| 91人妻人人澡人人爽人人精品| 啊啊啊操死我| 亚洲av青草久久一区二区| 综合网亚洲| av激情亚洲五月天| 久久国产在线一区二区| 日韩成人性日韩成人性爱视频在线免费观看 | 日韩在线一区高清在线| 亚欧毛片基地国产毛片基地| 日婷婷| 国产亚洲女v在线观看| 日韩亚洲国产视频| 老司机深夜影院18未满| 色久桃花影院在线观看| 亚洲国产麻豆一区二区三区| 天天色播亚洲综合网站| 日韩精品中文字幕二区| www久久久| 神马视频久久久久久| 嗯阿好爽好紧|