国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

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è)字拆開(kāi)看群里隔三差五就有人轉(zhuǎn)那種長(zhǎng)圖標(biāo)題寫著微信聊天必備最新Emoji隱藏代碼大全配一張密密麻麻的表格左邊一串U1F600這樣的字符右邊一個(gè)小黃臉。底下總有人問(wèn)這玩意兒怎么用我照著敲進(jìn)去發(fā)出來(lái)還是一堆字母。這個(gè)問(wèn)題我在幾年前做聊天內(nèi)容處理的時(shí)候也困惑過(guò)。當(dāng)時(shí)要給一批聊天記錄做表情統(tǒng)計(jì)第一反應(yīng)是拿正則去匹配冒號(hào)包起來(lái)的英文單詞結(jié)果一條都匹配不上后來(lái)才反應(yīng)過(guò)來(lái)微信里根本沒(méi)有 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 都沒(méi)關(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ù)制、粘貼到微信表情就出來(lái)了。整個(gè)過(guò)程跟代碼沒(méi)有半點(diǎn)關(guān)系純粹是字符搬運(yùn)。還有一種情況是輸入法的自定義短語(yǔ)。主流輸入法都支持設(shè)置觸發(fā)碼 → 輸出內(nèi)容你把觸發(fā)碼設(shè)成xh、輸出內(nèi)容設(shè)成 之后敲xh就能出圖。這才是真正意義上的敲代碼出表情只不過(guò)這個(gè)代碼是你自己定的跟 Unicode 一點(diǎn)關(guān)系都沒(méi)有。我在給社群做表情包整理的時(shí)候就是靠自定義短語(yǔ)解決的。把三十來(lái)個(gè)高頻表情做成兩字母觸發(fā)碼聊天效率提升非常明顯比每次翻面板快太多了。1.3 這套東西的適用邊界在哪先說(shuō)清楚它能干什么讓你快速輸入冷門表情、讓你在昵稱簽名里塞進(jìn)特殊符號(hào)、讓你批量處理文本里的表情、讓你做聊天記錄分析。再說(shuō)清楚它不能干什么。它不能突破平臺(tái)的輸入限制不能讓你發(fā)出別人看不到的隱藏消息也不能保證同一個(gè)碼點(diǎn)在所有人手機(jī)上長(zhǎng)得一樣。最后這條特別重要。同一個(gè)碼點(diǎn)在 iOS、Android、Windows 上渲染出來(lái)的圖案可能完全不同甚至同一個(gè)系統(tǒng)的不同版本都會(huì)變。你精心挑了一個(gè)看起來(lái)最可愛(ài)的表情發(fā)出去在別人那兒可能是個(gè)方框。這個(gè)坑后面會(huì)單獨(dú)講。2. Emoji 的底層結(jié)構(gòu)一個(gè)表情不等于一個(gè)字符想搞懂對(duì)照表得先接受一個(gè)反直覺(jué)的事實(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 開(kāi)始往上這一片叫 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。換算公式得記住做底層處理繞不開(kāi)給定碼點(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è)看不見(jiàn)的 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è)零寬字符肉眼完全看不見(jiàn)。這就解釋了一個(gè)高頻現(xiàn)象你從某個(gè)網(wǎng)頁(yè)復(fù)制了一個(gè)表情粘到微信里變成個(gè)黑白小符號(hào)怎么調(diào)都調(diào)不回來(lái)。原因就是復(fù)制的時(shí)候那個(gè) FE0F 被丟了。反過(guò)來(lái)還有UFE0EVS-15作用是強(qiáng)制文本渲染。想發(fā)個(gè)看起來(lái)不像表情的表情就用它。數(shù)字鍵帽那套也是同一個(gè)道理1?? U0031 UFE0F U20E3 數(shù)字1變體選擇包圍鍵帽三個(gè)碼點(diǎn)渲染成一個(gè)圖形。你要是把中間那個(gè) FE0F 刪掉某些系統(tǒng)就只顯示一個(gè)光禿禿的 1。提示做文本清洗的時(shí)候千萬(wàn)別無(wú)腦過(guò)濾不可見(jiàn)字符。FE0F、ZWJ、膚色修飾符都屬于這一類刪了表情就散架。2.3 ZWJ 與膚色修飾符長(zhǎng)度爆炸的元兇U200D叫零寬連接符ZWJ, Zero Width Joiner作用是告訴渲染引擎把前后兩個(gè)表情粘成一個(gè)。這是 emoji 組合的核心機(jī)制。一家四口那個(gè)表情 ZWJ ZWJ ZWJ 拆開(kāi)算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è)視覺(jué)單位的東西專業(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ò)了沒(méi)用會(huì)渲染成兩個(gè)獨(dú)立字符。這幾種結(jié)構(gòu)疊在一起就出現(xiàn)了一個(gè)經(jīng)典的長(zhǎng)尾問(wèn)題你以為限制了 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ū)編碼是怎么來(lái)的時(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í)愛(ài)用誰(shuí)用、標(biāo)準(zhǔn)不管的區(qū)域。SoftBank 的映射就是這套歷史產(chǎn)物碼位集中在 UE001–UE05A、UE101–UE15A、UE201–UE253 等幾個(gè)區(qū)間。同期還有另外兩家運(yùn)營(yíng)商也各搞了一套碼位互不相同。后來(lái) Unicode 官方開(kāi)始收編表情把它們統(tǒng)一分配到了 U1F300 往上那一片正式碼位這套統(tǒng)一后的編碼就叫Unified。收編的過(guò)程中官方做了映射表把各家 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)超過(guò)三千個(gè)含各種組合。所以會(huì)出現(xiàn)一個(gè) SoftBank 碼位對(duì)一個(gè) Unified 碼位最常見(jiàn)多個(gè) SoftBank 碼位對(duì)同一個(gè) Unified歷史重復(fù)大量 Unified 碼位沒(méi)有SoftBank 對(duì)應(yīng)新增的表情3.2 對(duì)照表長(zhǎng)什么樣下面這張表是結(jié)構(gòu)示意列了我印象最深的幾個(gè)映射方便你理解字段關(guān)系。完整的映射有幾百行從開(kāi)源數(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ū)不是按來(lái)源分區(qū)。另一件事SoftBank 碼位落在 PUA意味著它沒(méi)有標(biāo)準(zhǔn)字形。同一個(gè) UE001在舊設(shè)備上可能顯示成小男孩在現(xiàn)在的設(shè)備上大概率是個(gè)方塊或者問(wèn)號(hào)因?yàn)楝F(xiàn)代字體根本不認(rèn)這個(gè)地址。這就是為什么老聊天記錄遷移到新系統(tǒng)里表情會(huì)集體變成豆腐塊。3.3 自己生成對(duì)照表比抄表靠譜網(wǎng)上流傳的對(duì)照表質(zhì)量參差不齊我見(jiàn)過(guò)至少三個(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)隔開(kāi)碼點(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ù)整理到微信端落地光講原理沒(méi)意思下面是我實(shí)際搭過(guò)的一套流程從數(shù)據(jù)源到最終在聊天里用起來(lái)每一步都能復(fù)現(xiàn)。4.1 第一步把數(shù)據(jù)源拉下來(lái)清洗先從官方倉(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ì)拿到幾千條記錄。接下來(lái)做個(gè)篩選只保留fully-qualified。其他狀態(tài)在輸入框里發(fā)出去多數(shù)客戶端會(huì)自動(dòng)補(bǔ)全成完整形式你按簡(jiǎn)化形式存反而容易出問(wèn)題。這一步我踩過(guò)的坑是沒(méi)處理版本。E1.0到E15.0跨度十幾年如果你的目標(biāo)用戶里有大量老舊安卓機(jī)把 E13.0 之后的新表情推給他們顯示出來(lái)就是空白。合理做法是按版本打個(gè)標(biāo)記前端根據(jù) UA 或者系統(tǒng)版本做降級(jí)。4.2 第二步編碼轉(zhuǎn)換的核心邏輯SoftBank 轉(zhuǎn) Unified本質(zhì)就是查表替換。邏輯簡(jiǎn)單到有點(diǎn)無(wú)聊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ù)。原因前面提過(guò)少數(shù) SoftBank 碼位會(huì)映射到多個(gè) Unicode 碼點(diǎn)組成的序列比如某些帶修飾的組合。用列表能兼容兩種情況以后補(bǔ)數(shù)據(jù)不用改函數(shù)簽名。反向轉(zhuǎn)換就麻煩多了因?yàn)橛成涫嵌鄬?duì)一的一個(gè) Unified 碼位可能對(duì)應(yīng)多個(gè) SoftBank 碼位也可能一個(gè)都沒(méi)有。穩(wěn)妥做法是給每個(gè) Unified 碼位維護(hù)一個(gè)候選列表轉(zhuǎn)換時(shí)取第一個(gè)同時(shí)記錄無(wú)對(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: # 沒(méi)有對(duì)應(yīng)原樣保留或替換成占位符 out.append(ch) return .join(out)實(shí)際跑歷史數(shù)據(jù)的時(shí)候無(wú)對(duì)應(yīng)的比例會(huì)高得嚇人。我處理過(guò)一批十年前的聊天記錄SoftBank 表情占比不到 15%剩下全是后來(lái)新增的 Unified 表情。所以如果你的遷移方向是老 → 新工作量很小如果是新 → 老基本沒(méi)法無(wú)損。4.3 第三步在微信里真正用起來(lái)回到最開(kāi)始的問(wèn)題。想在微信里快速發(fā)冷門表情有下面幾條路按我實(shí)際體驗(yàn)的順手程度排序。路子一輸入法自定義短語(yǔ)。這是最接近敲代碼出圖的方案。進(jìn)輸入法設(shè)置找到自定義短語(yǔ)或快捷輸入新增一條觸發(fā)碼填xh內(nèi)容填 。保存后在任何輸入框里敲xh候選欄第一個(gè)就是這個(gè)表情。我自己的碼表是這么設(shè)計(jì)的兩個(gè)字母第一個(gè)字母表示大類x笑、k哭、z贊、a愛(ài)第二個(gè)字母是細(xì)分。三十來(lái)?xiàng)l覆蓋了日常 95% 的場(chǎng)景敲起來(lái)比翻面板快。這套碼表跟著輸入法賬號(hào)走換手機(jī)也能同步。路子二系統(tǒng)級(jí)文本替換。iOS 在設(shè)置 → 通用 → 鍵盤 → 文本替換里安卓各家在語(yǔ)言與輸入法里都有類似功能。效果跟輸入法短語(yǔ)差不多區(qū)別是系統(tǒng)級(jí)替換對(duì)所有 App 生效包括那些不吃輸入法候選欄的場(chǎng)景。缺點(diǎn)是改起來(lái)麻煩得進(jìn)設(shè)置一層層翻。路子三微信自定義表情。把常用表情存成自定義表情會(huì)進(jìn)到表情面板的收藏Tab位置固定翻起來(lái)比在幾百個(gè)默認(rèn)表情里找快。適合那些一天用十次的高頻表情。路子四復(fù)制粘貼。最原始但對(duì)付一次性需求很好用。從系統(tǒng)字符面板iOS 長(zhǎng)按地球鍵、macOS 的 CmdCtrlSpace、Windows 的 Win句號(hào)里選比在網(wǎng)上找對(duì)照表靠譜得多。提示別信輸入特定字符組合會(huì)觸發(fā)彩蛋表情這類說(shuō)法。真有這種機(jī)制也早就在版本更新里被修掉了。4.4 第四步長(zhǎng)度計(jì)算與截?cái)嗬@不開(kā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)?。按碼點(diǎn)截?cái)嗪苋菀装汛韺?duì)劈成兩半產(chǎn)生非法字符。比如把的D83D留下、DE00砍掉結(jié)果是一個(gè)無(wú)法渲染的孤立代理。這個(gè)字符串存進(jìn)數(shù)據(jù)庫(kù)、傳給別人可能直接導(dǎo)致對(duì)方客戶端報(bào)錯(cuò)。穩(wěn)妥的截?cái)喾绞绞窍劝醋炙卮厍蟹衷偃∏?N 個(gè)最后拼回去。慢一點(diǎn)但不會(huì)出事。5. 常見(jiàn)問(wèn)題與排查實(shí)錄這一節(jié)全是踩過(guò)的坑按出現(xiàn)頻率排序。5.1 顯示成方塊、問(wèn)號(hào)、空白這是最高頻的問(wèn)題原因至少四種得逐個(gè)排。原因一碼點(diǎn)超出接收端支持范圍。對(duì)方系統(tǒng)版本老字體里沒(méi)有這個(gè)字形就顯示方塊俗稱豆腐塊。Unicode 15.0 之后新增的表情在兩三年前的設(shè)備上基本都不認(rèn)。判斷方法把同一個(gè)表情發(fā)給不同系統(tǒng)的設(shè)備如果只有部分出問(wèn)題就是這個(gè)原因。沒(méi)解只能降級(jí)用老表情。原因二變體選擇符丟失。前面講過(guò)?少了UFE0F就從彩色變黑白1??少了U20E3就退化成普通數(shù)字。這類問(wèn)題肉眼看著沒(méi)壞但不對(duì)容易被忽略。原因三PUA 字符沒(méi)做轉(zhuǎn)換。老數(shù)據(jù)里殘留的UE001這類私有區(qū)碼位現(xiàn)代字體一律不認(rèn)全是方塊。排查方法很簡(jiǎn)單把字符串按碼點(diǎn)拆開(kāi)看有沒(méi)有落在UE000–UF8FF區(qū)間的有就說(shuō)明需要跑一遍轉(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è)連帶問(wèn)題。一是索引長(zhǎng)度。早期 MySQL 版本單列索引最長(zhǎng) 767 字節(jié)utf8mb4一個(gè)字符占 4 字節(jié)所以 varchar 索引最多 191 個(gè)字符。這就是那個(gè)著名的191 索引長(zhǎng)度問(wèn)題的來(lái)源?,F(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)值行為更符合直覺(jué)。5.3 問(wèn)題速查表把上面這些整理成一張表出問(wèn)題時(shí)對(duì)著查現(xiàn)象最可能原因排查方法處理方式發(fā)出去是方框接收端無(wú)該字形換設(shè)備交叉驗(yàn)證降級(jí)用低版本表情黑白與彩色不一致缺 FE0F打印碼點(diǎn)十六進(jìn)制補(bǔ)上 UFE0F鍵帽不對(duì)勁缺 20E3 或 FE0F同上補(bǔ)全三碼點(diǎn)序列數(shù)據(jù)庫(kù)存成問(wèn)號(hào)字符集非 utf8mb4SHOW CREATE TABLE改字符集截?cái)嗪笳麠l消息異常代理對(duì)被劈開(kāi)檢查孤立代理項(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 我自己踩得最慘的一次說(shuō)個(gè)具體的。早期做聊天記錄導(dǎo)出我寫了個(gè)清理不可見(jiàn)字符的函數(shù)用的是白名單之外一律過(guò)濾的邏輯。上線之后用戶反饋所有一家三口類的復(fù)合表情都變成了三個(gè)人分開(kāi)站著中間還多倆空格。原因就是把U200D當(dāng)成了不可見(jiàn)字符給刪了。ZWJ 確實(shí)是零寬的但它承擔(dān)的是連接語(yǔ)義刪掉之后組合就散了。后來(lái)我把白名單改成了只過(guò)濾 U0000–U0008、U000B–U001F 這些真正的控制字符其他一律保留。另外加了一條規(guī)則任何對(duì)文本的壓縮、去重、清洗都要在字素簇層面做不能碰單個(gè)碼點(diǎn)。這件事之后我養(yǎng)成了一個(gè)習(xí)慣凡是處理文本的代碼測(cè)試用例里必帶三種數(shù)據(jù)——一個(gè)普通 emoji、一個(gè) ZWJ 復(fù)合表情、一個(gè)帶膚色的表情。三個(gè)都過(guò)了才算過(guò)。還有一個(gè)偏門的經(jīng)驗(yàn)微信的昵稱和簽名對(duì)表情的支持比聊天框保守。有些在聊天里正常顯示的表情放進(jìn)昵稱會(huì)顯示成問(wèn)號(hào)或者被截?cái)?。我一般建議用 Unicode 6.0 之前的老表情兼容性最穩(wěn)。6. 關(guān)于對(duì)照表最后說(shuō)幾句實(shí)在話我把Emoji隱藏代碼這件事拆到現(xiàn)在結(jié)論其實(shí)有點(diǎn)掃興真正有用的不是那張表而是背后的數(shù)據(jù)處理能力。對(duì)照表是一次性消費(fèi)品抄完就完事了而且大概率抄來(lái)的版本有錯(cuò)。但只要你理解了碼點(diǎn)、代理對(duì)、字素簇這三層結(jié)構(gòu)遇到任何表情顯示異常長(zhǎng)度計(jì)算不對(duì)截?cái)喑鰜y碼的問(wèn)題都能自己定位。至于微信這條鏈路最實(shí)用的技巧說(shuō)出來(lái)可能讓人失望——配好輸入法的自定義短語(yǔ)比任何對(duì)照表都管用。我自己的碼表用了三年中間只調(diào)整過(guò)兩次一次是加了幾個(gè)新的一次是刪掉了幾個(gè)總打錯(cuò)重碼的。這套東西一旦配好聊天效率的提升是實(shí)打?qū)嵉谋仁詹匾话購(gòu)垖?duì)照長(zhǎng)圖強(qiáng)。如果還想往下擴(kuò)展有兩個(gè)方向值得琢磨。一是把表情按語(yǔ)義標(biāo)簽重建索引比如把所有情緒-正向的表情歸一類做搜索的時(shí)候按情緒找比按名字找符合直覺(jué)。二是做版本適配層根據(jù)客戶端版本動(dòng)態(tài)決定用哪套表情這個(gè)在跨端產(chǎn)品里遲早要面對(duì)。這兩個(gè)話題都能單獨(dú)寫一篇今天就不展開(kāi)了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天内射| 我要去看2个日本美女.com曹逼| 日韩人妻播放| 啪啪自拍九九综合| 99精品丰满人妻无码| 国产四虎在线| 国产污视频麻豆传媒一区二区| 日本精品成人无码| 亚洲欧美中文日韩视频中国语| 超碰人人操97碰| 女性喷水高潮在线观看| 国产偷人伦激情在线观看| 亚洲男人在线观看天堂| 婷婷国产精品一区二区| 好爽视频在线观看视频| 97欧美超碰| 日本孕妇一区二区视频操逼免费看 | 超碰免费97| 欧美+日产+中文| 97网色| 免费精品AB| 一区二区三区看视频| 久超碰这里只有精品| 密臀成人视频久久久| 97超碰色色| www.av家庭乱伦| 啊啊啊啊网站| 亚洲性少妇| 道久久五香丁月婷婷激情综合| 欧美激情超碰777| 九九九久千久久激情蜜桃在线看 | 秋霞一集毛片观看| 黄色毛片A片| 国产情侣自拍在线播放| 国产精品高潮呻吟av久久4虎| 亚洲午夜免费狠狠干| 欧美91久久久久| 亚洲精品不卡一二三区| 岛国福利在线精品播放| 60秒免费视频| 亚 欧 美 综合| 性欧美体内射精| 久久综合18p| 操91| 人妻AV在线| 啪啪啪大香蕉| 亚洲黄色网址视频| 国产丝袜美女在线一区| 国产高清成人免费视频| 亚洲天天操| 国产欧美另类久久久精品课程| 99久久9| 四月丁香婷婷| 高凊专区人人操| 激情五月综合网| 免费看A片毛毛片在线播| 国产精品一区二区手机看片| 黄色AV免费| 国产精品96久久久久久| 丰满少妇一区二区三区免费看| 欧美在线电影| 男人午夜天堂| 9I1性色影院| 亚洲女优有码无码高清| 思思热一热婷婷热一热| 青青草中出视频| 亚洲日韩欧美一区二区| 加勒比综合a∨| 91欧美丨精品丨入口| 最新av在线| 97露脸精品丝袜| 秋霞午夜视频一区二区| 97碰碰日本乱偷人妻中文的| 日日AAvv| 中文字幕视频二区| 91国产操逼视频| 一二三四视频中文字幕在线看| 亚洲小电影免费涩涩成人在线高清| 久久精品国产亚洲AV高清演员表| 精品人妻一区二区视频| 激情五月天丁香社区| 九九综合久久| 99热综合在线| 欧美白嫩女HD| 熟女少妇视频| 婷婷在线视频在线观看| 久久久久久久国产视频| 91爰爱欧美| 91网站在线播放| 九热久| 成年人网站在线免费观看| 国产在线综合网| 伊人激情五月天一区二区| 五月色丁香| 欧美日韩少妇色情| 亚洲欧洲自拍| 日本熟妇人妻中出视频| 亚洲日本男人天堂网| 操死我了嗯嗯嗯| 97在线视频网站| 亚洲情色欧美| 色青青久久影视| 久久女人一区二区三区| 天天草AV| 日韩黄色片子| 欧美第38页| 后入式999| 亚洲欧美清纯| 手机在线人成免费视频| 久久精品老司| 91精品导航| 久热影视| 亚洲天堂色图| 亚洲资源吧| 成人一道本免费视频| 一个人免费HD91视频| 国产精品国产自产拍高清AV| 日本 情色 1区2区3区| 黄片www视频免费| 男啪女色黄无遮挡免费观看| 亚洲一区中文字幕一区| 精品对白久久不卡| 人妻AV在线| 日韩78m视频| 国产精品天堂| 亚洲色图激情小说| 清纯唯美第一页| 黄色av网站在线播放| 2010男人的天堂| 久草毛片| 怡红院一区二区熟女人妻| 成人在线视频二区| 六月丁香网| 久久噜| 国产亚洲深夜激情| 丝袜喷水在线| AAAA级日本片免费视频| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 97露脸精品丝袜| 亚洲欧美天堂| ,国产乱人伦精品一区二区三区| 秘书高跟黑色丝袜国产91在线| 国产对白刺激视频| 少妇丝袜在线观看AV| 日韩综合无码色欲vv| 国产高清不卡视频| 国产精品久久久久无码A√| 蜜桃精品一区二区三区ww | 国产呦精品一区二区三区下载| 人妻黑丝袜电影| 日韩大香蕉| 丁香五月成人| 男人的午夜天堂| 欧美日韩超碰在线| 中文字幕在线免费观看2| 亚洲AV高潮| 午夜国产成人精品视频| 97操碰| 国产三级电影免费观看| 91精品人妻一区二区三区蜜桃| 五月天激情网图片| 老司机天天操| 精品人妻一区二区免费看| 人妻中文字幕日韩电影| 91精品老女人| 99re在线精品78| 免费精品福利在线观看| 人人操人人插 - 百度 - 百度| 久久手机好看网站| 中文字幕亚洲永久精品| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 青青草无码视频| 亚欧韩av| 亚洲97综| 2019男人的天堂| 影音先锋国产精品| 免费成人在线观看91| 一本久久精品中文字| 99久久精品国产高潮| 日韩欧视频| 欧美成不卡网| 啪啪91| 日韩精品中文字幕人妻| 亚洲欧美综合网站| 怡红院成人av| 久久亚洲婷婷| 91影库| 欧美 色 亚洲| 91久久久老司机| 九九av| 激情五月天色播| 亚洲av无码国产精品字幕| 国产一| 日本一区二区三区精品| 激情看片网站| 精品久久久久av影院| 青青久久艹| 欧美色日| 爱干爱射网啊啊啊| 久99| 国内自拍 日韩激情 99| 岛国大片在线观看网站入口| 国产91影院| 久久影视二区三区行押| 天天综合影院91| 丁香五月成人| 日日夜夜天天| 怡红院一区二区熟女人妻| 色悠久| 久久黄黄黄| 久艹99| 日韩无码嘿咻黑热久| a级理论午夜日本| 中文字幕日韩精品久久| 国产又粗又大硬免费色网视频| 伊人四虎综合| 凹凸 69堂 在线播放| 中文字幕免费看| 青青草色插素人| 蜜臀在线免费观看在线免费观看| 爱射综合| 69超碰综合| 狠狠操夜夜| 超碰在线欧美性爱激情| 日韩成人私密一级精品av| 久久老熟女| 久久久久久中文| 老熟妇综合| 丝袜制服字幕在线| 啊啊啊啊啊操我视频| 丝袜狠狠草尤物人妻av91| 天美精品av| 插欧洲美女欧美精品| 色色色色日本| 免费的很黄很污的全部视频| 亚洲国产麻豆一区二区三区| 亚洲中文一区二区三区视频| 九九99精品视频在线观看| 色99视频| 欧美亚洲国内自拍| 1204金沙人妻懂旧版免费| 夜夜操2028| 日韩精彩免费| 97干色天堂| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 嗯……啊…嗯嗯…啊…好舒服| 天堂日本亚洲欧美| 绑缚麻绳人妻寝取完整版| 欧亚日韩三区| 成人精品水蜜桃久久久久久久| 九九九九九九九九九九九蜜桃| 大香蕉色欲AV| 国产精选视频| 国产精品毛片?v一区二区三区| 2018天天干在线视频| 日本视频一区二区三区| 国产精品69人妻无码久久久| 人夜夜精品网站香蕉嫩草| 97激情97激情| 小骚逼被操的爽不爽| 国语av狠狠色丁香婷婷综合激情| 草莓精品视频在线免费观看| 操逼逼福利视频| 五月天激情四射| 欧洲乱码一区二区| 激情四射婷婷六月天| 日韩无码第3页| 欧美的性爱网站免费| 欧美大香蕉专区网| 97精彩视频网站| 亚洲www91| 丰满人妻一区二区中文| 久久区| 九九热久久99精品re| 无码自拍SM| 日本免费不卡二区| 亚洲成成熟女人综合一区二区| 欧美亚洲自拍另类人妻| 国产精品亚洲免费| 亚洲欧洲色情高清| 91丝袜美女视频| Blackedraw视频一区二区| 久久黄黄| 后入人妻无码| 国产av又色又爽又黄| 97色在线| 人妻人久久精品中文字幕| 综合亚洲欧美精品日韩?v| 国产激情av女片自拍| 九九九网页| 97就爱干| 眼镜人妻101.com| 九九热免费视频| 操死我了嗯嗯嗯| 插入逼91| 亚洲天堂人妻一区二区| 久久久久久九九九九九| 人妻人人操| 久热网| 日韩欧美性爱电影在线观看| 天天综合网久久ww| 欧美天天综合网版| 在线无码操| 91在线免费观看处女| 97超碰超| 狠狠狠狠狠干| 日本久久999| 国产日韩精品无码去免费专区国产| 99久视频| 丰满人妻-区二区三区免费看| 自拍偷拍2025在线观看| 97视频在线观看免费高清| 日韩欧美大力操| 丝袜狠狠草尤物人妻av91| 特污精品女优骚货黄色视频在线免费观看| 夜夜肏2021| 深喉吞精| 欧美|91色综合| 五月天精品| 亚洲最大无码中文字幕网站| 欧美视频一区二区三区| 久久人人看| 亚欧美色图| 亚洲精品美女久久久久久久久| 99re6在线视频精品免费完整版安卓版| 99热日本| 搡老女人老91二区| 欧美色图中文字幕| 国语精品对白| 色五月婷婷网| 91大神精品长腿在线观看网站| 久久理论字幕视频| 亚洲精品三区在线观看| 99精品丰满人妻无码| 精品-91人妻子系列| 国色综合天| 少妇与黑人高潮在线| 亚洲精品毛片在线观看| 插插综合网天天影视网| 日本精品一区三区| 久草午夜| 亚洲男人的天堂网| 午夜免费视频1000| 操逼免费视频无码国产| 夜夜高潮夜夜爽国产伦精品| 91九久| 亚洲色欧美| 999 久久久| 一级免费啪啪片| 91亚洲网| 很狠操| 欧美性爱97超碰| 亚洲中文国际强奸字幕| 蜜臀AV秘一区翔田千里| 蜜臀久久99精品久久久久久成人小说 | 91欧美少妇| www.四虎在线| 超碰人人超在线观看| 久久久96| 午夜视频久久久| 久久视网78| 婷婷综合网站| 黄在线| 91在线视频国产网站| Aa东京男人的天堂| 麻豆AV96熟妇人妻| 超碰爽人妻熟女Av| 久热69九色熟妇97| 97精品国产97久久久久久| 午夜寂寞欧美| 亚洲九月丁香| 人人操人人大香蕉| 色综合久| 免費黃色視頻觀看一| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 操逼精品视频| 国产精品午夜成人福利| 欧美日韩免费专区在线| 精品国产99| 欧美熟妇乱码在线一区| 欧美日韩淫加| 91无码人妻| 国产精品3| 97精品视频在线| 欧亚韩国999| 亚洲影视第一页| 99色在线| 好爽视频在线观看| 欧美色人| 日韩极品无码B| 欧美精品日韩久久久九| 九一亚洲国产免费| 躁躁日曰躁2020| 91老熟女老女人国产老太| 午夜后入| 欧洲精品二区| 岛国免费视频在线| 在线人人人人人人精品超| 亚洲s色图| 亚洲天堂日本| 欧美色五月| 先锋精品av色鲁| 国产精品青青草| 欧美爆操91| 女人的天堂大香蕉网| 天天干天天日天天射黄色片| 国产视频大全| 午夜精品久久久久久久久久久久久 | 加勒比日本在线| 日日夜夜青青草母狗| 狠色婷婷久久一区二区三区_| 色悠久久久av| 91亚洲色图| 伊人久久综合影院| 成片免费观看视频大全| 色性荡荡荡荡视频| 中出人妻中文字幕91在线| 9I1性色影院| 一级黄色性爱裸体视频| 影音先锋乱| 另类图片五月| 天堂精品| 13小男生GAY自慰脱裤子| 国产亚洲日本精品在线| 91人人看| 日韩综合第八区国产精品| 家庭乱伦麻豆| 久久激情综合| 人妻人人澡人人爽人人| 女人久久久| 男人高清无码一区二区| 日本一区二区三区精品| 大香蕉性欧美| 人人玩人人添人人澡免费| 欧美精品自慰系列寂寞少妇| 91艹逼精品| 美女性91| 天天躁日日躁AAA片李宗瑞| 婷婷色香| 加勒比海色香蕉婷婷| 极品尤物女神在线观看| 欧美在线啊啊啊| 色欧洲| 熟妇操花| 热热色色综合| 白天啪啪晚上啪啪视频| 久久熟妇五十路一区| 天天综合欧美| 国产成人网站在线观看| 国产视频大全| 100啪啪视频大全| 欧美亚洲综合色| 国产乱不卡| 美女尤物人人操| 性色中出| 亚洲一区二区三区在线激情| 熟妇在线视频一区二区| 91美女片在线| 婷婷性爱| 欧美亚洲情色| 久久久影院| 加勒比海色香蕉婷婷| 91欧美| 亚洲丨在线| 精品超碰国产| 欧美日韩亚洲天堂| 无码9区| 中文 人妻 制服| 亚州伊人色综台| 淫荡熟女乱伦网| 天天干天天日天天射黄色片| www.av在线视频| 在线一区| av九九| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 超碰97在线 欧美 国产| 韩国三级一线观看久| 天天操女人| 日韩精品字幕| 日韩一级二级三级免费看完整版国语版 | 91一区二区三区蜜桃| 人妻久热在线| 午夜福利av电影在线| 秋霞鲁丝午夜无码一区二区三| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 玖玖97综合 | 国产精品久久久久久久毛片1| 大香蕉欧美国产日韩高潮| 国产欧美精选自拍一区| 亚欧洲一区二区视频| 成人性爱电影一区二区| 精品人妻一区二区三区在线视频不卡| 精品射1999| 天天操夜夜操狠很操| 国产风韵犹存熟妇三区| 日日夜夜天天| 啪啪啪精品| 九色 蝌蚪 熟女自| 18精品一区| 亚洲高清无码在线桃色| 美欧色综合| 亚洲欧美综合色| 精品亚洲黄色片 国产精品导航一区二区| 亚洲精品黑丝| 四虎永久在线精品免费网址| 久操网址| 国产女大学生AV| 九区国产| 久久这里都是精品| 亚洲女毛多水多21P| 亚州综合在线| 超碰在线在公开超碰在线在公开| 4141514逼喷水三级片| 美中日韩无码| 美日韩男女操屄视频| 骚货 中文字幕 av| 开心六月色| 色欲天天综合网| 久热影视| site:sinbotex.com| 日本免费一区二区不卡 | V A在线| 青青青草原| 国产福利夜| 欧美激情综合色综合啪啪五月| 日本熟女免费視颖| 天天影视色香欲综合网小说| 97综合激情| 中文欧丝袜诱惑| 精品久久久中文字幕不| 超碰久热| 色情五月丁香| 91小视频| 日本三级网页| 国产一级高跟丝袜| 亚洲人人操| 亚洲一区二区三区欧美日韩| 亚洲天天做日日做天天谢日日| 91亚洲图片| 久久久久久中文| 日本东京热大香蕉a片| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 青草视频在线看看看看看看看看看| 男女激情黄色网址| 亚洲啪啪视频一区二区| 一区二区三区高清天码| www.亚洲黄色| 日韩欧美午夜一区二区| 国产探花日韩援交| 岛国激情视频在线观看| 欧美一区二区一级岛国大片| 国产一区二区三区高清视频| 色欲天天综合久久久无码网中文| 精品对白久久不卡| 色九久| 亚洲丝袜少妇在线| 欧美天天搞| 人人妻人人澡人人爽人人精品浪潮| 亚洲另类色综合网站| 国产精品高朝久久久久久久| 成人开心网在线视频| rivers-china.com| 国内毛片四区| 精品亚洲天堂| 国产成人91一区二区三区| 人妻色偷色噜| 最新av网站在线观看| 永久免费av无码网站国产app | 久久久精品日本一道| 欧美色偷拍 | 东京热,男人的天堂| 亚洲成人在线乱码色午夜| 97久久超碰日韩精品| 久久久啊啊啊| 精品九九九| 四虎国产精品永久入口| 91人妻素女| 婷婷亚洲综合| 中文字幕艹艹| 91AV天美在线视频| 久久久性爱| 中文乱码字字幕在线第5页| 一级片视频啪啪| 亚洲精品国产熟女| 久久98| 97干在线看| 亚洲熟久久| 五月天婷婷社区| 国产主播福利| 99久久精品国产高潮| 日韩97超碰中文字幕| 三级网站超变态精品| 伊人嫩草| 日韩有码 一区二区三区| 操逼视频亚洲| 99999久久久久9国产精品| 成人一区二区三区四区| 亚洲欧洲日韩中文字幕一区| 欧美日韩国产一区二区小黄片大全| 日韩 欧美 另类 人妻| 另类在线| 老司机午夜福利视频一区二区| 香蕉精品二区二区| 国产乱伦性爱区| 97色婷婷| 偷拍片久久| 另类亚洲一区二区三区| 成人看片网站| 久久99深爱久久99精品| 狠狠操,使劲操| 中文字幕在线观看视频www| 久久欧洲| 久操精品| 婷婷久久综合| 午夜久久久| www.久久制服糖| 91狠婷| 9精品久久久久| 国产精品婬乱一级毛片彝族| 欧美爆操91| 伊人操| 337p大胆噜噜噜噜噜91Av| 亚洲超碰97| 综合网色| 97网站在线观看| 天堂无码精品国产久| 欧美日韩人人精品| 婷婷五月天激情四射| 五月婷婷久久综合| 毛片99-全集电影手机免费观看完整-B029AV | 福利视频网站| 九九热AV| 精产品久久| 成人午夜视频免费播放| 韩日自拍| 国产精品久久久久综合| 人妻无码视频一区二区三区久久| 天天谢天天干| 亚洲综合99999| 人人操人人爽人人操人人| 97AV爱| 久久婷婷电影网| 欧美综合骚| 天天综合网网欲色| 人妻在线臀日韩| 久久精品国产Aⅴ| 九九久久久久久爱| 国产精品第一区第一页| 黄总AV色图| 8x福利精品第一福利视频导航| 亚洲永久永久永久永久一级一级一级精品 | 超碰97首页| 逼逼逼逼操操操操操操操操操午夜剧场 | 天堂性色| 婷婷三区| 国产对白刺激视频| 激情婷婷丁香| 五月天婷婷久久| 亚欧美色| 大香蕉在线86| 日欧亚洲二三区大片不卡| 美国三级日本三级久久99| 日本 欧美 国产一区| 少妇天堂| 日本加靬比网站发布页| 亚洲最大成人a毛毛片| 欧美特黄视频网站| 怡红院视频在线| 亚洲国产成人7777| 欧美色图97| 丁香六月婷婷久久综合| 午夜小电影在线插入淫高潮| 日本九九久久99| 成人性爱全视频观看| 亚洲黄色电影| 国产一区麻豆免费观看| 國產尤物AV尤物在線觀看| 欧美日韩制服| 久久伊人网视频一区二区三区 | 综合日韩激情另类图片| 九色在线熟女国产黑人| 蜜臀久久99精品久久久久久酒店| 欧洲乱码一区二区| 国产97视频免费观看| 热99re69精品8在线播放| 久久久久久久久久黄色网 | 97操综合| 国精品一区二区三| 国产成人免费观看在线视频| 97免费在线观看视频| 97 九色| 亚洲中文字幕噜噜噜久久久| 少妇人妻太紧太深av| 91国产丝袜白虎| 1204av韩国| 91久久精品蜜臀| 成人性爱视频在线看| 国产精品96久久久久久| 懂色av中文字幕一区二区三区天美| 99成人| 人人干人人搞人人摸| 99色网| 久久大香蕉97| 欧美999999| 色一射色一射| 91狠狠综合久久久久久| 人人操人人搞人人草| 欧美日韩97| 久久久九| 日韩天天本| 69综合网| 台湾佬激情综合| 午夜天堂啪啪| 国产精品色片一区二区| 无码操逼视频一下| 亚洲国产精品成人久久蜜臀| 国产精品农村妇女精品| 毛片麻豆91糖心精品毛情片| 五十路熟女工口| 中文字幕 一区二区 亚洲无码| 五月丁香激情啪啪| 国产一区二区啪啪视频| 亚洲 日韩 丝袜 熟女 变态| 三级日本一区二区三区| 成人怡红院| 久久有码视频| 亚洲激情欧美色图| 97网址97| 日本久久999| 久久亚码| 大香网伊人久久综合网eew| 亚洲中文制服诱惑| 后入 亚洲 美女 射| 欧洲色色| 天天操狠狠日夜夜干超碰撸com视频在线观看| 91在线精品| 日本Xx性爱| 搡老人老9丨女老熟人| 双插性欧美一二三区| 久久69精品久久久久久久| 久久精品人人做人人看| 国产精品成久久久久午夜午夜| 亚洲欧洲激情卡通另类文学四射小说网站 | 91色综合激情| 国产精品2020| 精品亚州18| 亚洲综合射| 久久成人精品| 亚洲 日本 不卡| 中文字幕乱亚洲美女精品一区| rion磁力链接| 91操操操操| 欧美爆乳精品一区二区| 国产乱伦亚洲| 精品毛片久久久精品毛片| 欧美疯狂做爰xxxx| 男人天堂2019亚洲| 日本亚洲vr欧美不卡高清专区| 91久久精品国产| 欧洲亚洲人妻无码中字久久三区四区| 青女在线| 蜜臀99久久精品| 亚洲天堂男人网| 国产91会所女技师在线观看| 欧美日本中字另类在线| 秋霞视频一区二区 | 亚洲精品国产拍免费91在线| 国产400孕妇孕交群| 国产1024在线播放| 岛国在线一区二区三区| 人妻AV在线| 欧美狠狠弄| 狠狠操狠狠燥| 精品少妇999| 亚洲导航深夜福利| 色五月婷婷网| AV在线资源| 欧美综合综合| 9国产超碰| av天堂手机版追回| 久九九九九九九热| 青青青草伊人精品| 亚洲欧美另类激情小说| 91精品人妻电影| 久久熟女人| 国产精品3| 亚洲高清视频在线免费观看| 大香网站| 综合国产97| 少妇人妻在线| 中文字幕日韩专区精品系列| 99热婷婷| 精品成人女人久久| 天天澡天天爽日日AV| 亚洲精品一区二区三区在线播放| 欧洲无码一区二区| 天天综合站| 成人一道本免费视频| www.超碰| 9997se| 91人妻最真实刺激绿帽| 91 亚洲 欧洲| 亚洲色综网| 亚洲另类小说卡通动漫| 熟女人妻av在线资源,黄色的资源| 好舒服视频| 国产精品com| 99热这里只有精| 国偷自 一区二区| AA级电影三区| 久久手机视直播| 亚洲精品国产拍免费91在线| 黄片com.| 国精综合一二三区影视| 99久久久无码国产精品性啊聊| 国内精品久久久久影院亚洲| 国产视频小说| 欧美中文字幕日韩在线| 欧美制服另类丝袜| 亚洲色宗合| 狠狠穞A片一區二區三區| 狠狠干2020| 亚洲黄色a级片| 精品亚州18| 日婷婷| 色哟哟-国产专区| 97超碰人妻| 另类综合另类| 欧美日韩1234| 麻豆亚洲Av成人无码一区精品| 97国产精品一区| 天天爽天天操| 伊色久人大在线| 综合激情五月丁香| 大香久久| 欧美第一页性| 一区在线精品中文字幕| 亚洲乱色视频一区、二区在线| 国产美女高潮| 亚洲宗合电影| 香蕉久久AⅤ...| 啊啊啊啊啊啊啊在线| 无码人妻丰满热妇又大又粗| 亚洲诱惑天堂 | 91偷拍欧美亚洲| 日本羞羞的视频在线播放| 无码欧美有限公司| 一本色道久久天天射天天干| 东京热av男人的天堂| 日日操丁香五月天| 超碰久草| 色97| 午夜福利一区二区影院| 青青草国产盗摄一二三区| 久久黄色性爱视频| 伊人9| 人妻加勒比东京热| 人妻二区| 在线五区| 口爆综合网| 国产又黄又爽又刺激久久久久久 | 亞洲久久直播| 性欧美999| 黑丝少妇麻豆| 乱伦av国产| 加勒比色99999| 久九九九九九九热| 国产成人一级av88| 中文字幕乱妇免费视频| 自拍丝袜美腿人妻| 凸凹视频在线观看| 好属操| 蜜臀亚洲综合一二三四区| 久久久九九网站| 一级毛片电影免费看| 岛国999| 91婷婷伊人狠人| 国产日韩在线播放av| 中出20p| 欧美一级欧美三级在线观看| 粉嫩不卡一区二区性爱| 中文字幕后石码四区五区| 亚洲欧洲久久天堂| 五月综合激情网| 人人艹亚洲| 欧美色院| 土豪酒店各种姿势玩弄极品幼稚| 人妻啊啊人妻啊| 日本东京热加勒比久久| 97精品久久| 玖玖大干人妻| 欧美高潮在线| 婷婷综合网| 自拍视频一区在线观看| 97免费在线观看| 色悠久久久av| 天天综和| 91黑丝在线播放| 乱伦AVxx| 国产又色又粗又黄又爽| 欧美春色| 97就爱干| 欧美色天堂网在线视频| 婷婷久草一区二区三区| 日韩不卡a级视频专区| 都市久久精品激情亚洲| 天天爽天天操啊啊啊| 男人天堂久久精品不卡| 欧美日韩大陆黑人少妇99| 天天射网| 在线 制服丝袜中出 人妻| 岛国艾薇凹凸视频天堂| 老司机天天操| 欧美成熟性爱精品| 国产精品自拍视频| 欧美另类丝袜熟女| 综合一区二区影视| 色天堂综合| 亚州色站 日韩电影| 久久久草成人网站久久久草成人久久久草久久久 | 嫩草美女久久| 国内毛片欧美香蕉精品| 色姑娘综合网| 69一区二区三区| 日韩三级av片| 欧美伊人电影| 欧美性色欧美| 97在线视频免费看| 99久在线精品99re8蜜桃| 激情婷婷丁香网| 蜜臀一二三区| 五月天AV资源| 91痴汉| 91天美免费| 精品人妻高清麻豆av| 久肏视频字幕| a啊啊啊啊啊啊啊啊一区二区| 久久久性少妇| 综合少妇网| 国产精品乱码久久久| 哈哈操电影| 97精品视频| 亚洲 无码 偷拍| 人人操人人舒服| 午夜.DJ高清在线观看免费7| 久久久久久久伊人精品| 国产成人手机视频激情| 人妻aa| 91碰碰碰| 毛片17S| 媚薬在线视频麻豆| 久久久久久久综合,国产| 精品欧美日韩在线观看| 99草精| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 九九色图| 好吊色在线观看| 亚洲美欧999| 九区国产| 亚洲人妻色图| 精品久久久av无码免费| 日韩综合无码色欲vv| 大色综合网| 国产精品一区二区亚洲人成毛片| 婷婷色综合欧美日韩| wwwss在线观看| 熟女人妻av在线资源,黄色的资源| 青青草在线成人视频| 久久香蕉超碰97国产精品 | 91亚州| 日本一区二区三区午夜观看| 日韩人妻播放| 丁香五月天堂网| 欧美丝袜激情| 爱丝福利| 欧美激情久操网| 亚洲精品影视老司机| 久久综合激情| 图色综合网| 天天综合,91入口| 亚洲高清视频在线免费观看| 中文字幕交换人妻| 玖玖综合.com| 亚州欧美总和| 欧美日韩在线小说 | 日韩黄色成人性爱| 欧美熟妇乱码在线一区| 97爱啪| a亚洲欧美色欲| 天天干天天狼在线视频| 国产91美女视频| 不卡av在线中文字幕| 九九亚洲视频| 国内97干免费看| 国产日韩久久| 欧美,日韩,亚洲视频| 丰满少妇一区二区三区专区| 色五月AV在线| 久久久久久亚洲Av无码精| 婬女免费一二三区A片| 爽爽爽免费视频| 激情欧美97| 国产小视频91| 青青草乱入乱欲视频在线观看| 日本媚薬中文字幕在线| 播播亚洲小说亚洲| 97久久免费| 亚洲av青草久久一区二区| 欧美在线播放aaaa| 噜噜噜亚洲精品| 国产在线能看的你懂的| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴| 北京美女一区二区| 无码高清操逼| 少妇高潮99p| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 狂操嫩妻视频一区二区三区| 国产蜜臀在线| 噜噜噜在线视频| 久久夜夜夜夜| 一中国女人毛片水真多| 狠狠色综合网| 99久久99九九99九九九| 黄片在线免费在线观看| 18禁久极品美女久久哦哟呀!| 黑人免费福利视频| 97人肏| 欧美少妇色图| 亚洲综合色男人网| 夜夜爽夜夜高潮夜夜爽| 婷婷久月| 美女91网| 色婷婷狠狠| 欧美成97爱| 丁香六月啪| 97网色| 夜夜中出国产| 亚洲人妻在线精品| 欧美少妇一区二区三区| 97超碰精品| 亚洲男人的天堂一区二区| 无码不卡亚洲成?人片| 91是天天| 中文字幕精品免费一区二区| 午夜欧美J进J出白浆流出久久久 | 夂久色| 久操97| 日韩/97| 成人精品一区二区91毛片不卡| 97久久精品国产| 国产成人自拍视频视频| 亚洲揄拍网| 人人摸人人摸人人干| 中文精品少妇天堂| 一级黄色影片| 91老熟女视频| 精产国品一区二三产品| 亚洲国产ⅴ高清在线观看| 少妇人妻激情四射| 激情五月天丁香社区| 综合色区偷拍| 日韩内射视频| 欧美十八禁导航成人| 人妻丰满熟妇av无码区蜜桃| 久久久爆乳翘臀一线天伦理视频| 9久久久久| 日本大香蕉| 人妻熟女av国产网站| 亚洲资源站| 欧美综合制服在线| 国产成人久久久精品免费AV| 日韩无码一区二区三区| 99啪啪| AAA久久| 久久亚洲国产成人| 天天搞欧美| 青青草自拍视频在线播放| 天堂俺去俺来也www久久婷婷| 日韩青久久| 欧美亚洲国产自久久| 日本成人电影资源网| 草草草草视频| 午夜福利在线合集| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 亚洲欧美日韩精品久久久一区二区| 亚洲高清欧美总合| 四虎免费看黄| 狠狠穞A片一區二區三區| 8x福利精品第一福利视频导航| 色噜噜人妻av中文字幕| 天天综合香 ld视频| 日韩精品一区二区三区色欲| 无码一区免费在线不卡| 亚州五月| 亚州春色| 啊啊啊啊啊在线观看网址| 一本一道vs波多野结衣| 午夜精品久久一区二区| 久久久久96| 97日视频| 少妇99成人麻豆| 小情侣高清国产在线视频| 亚洲成人黄色在线观看| 99久在线精品99re8蜜桃| 欧美激情久| 国产有码一区| 91人妻爽爽人人做人人澡| 91强热人妻| 一区二区三区高清天码| 色婷婷色99国产综合精品| 91亚洲色人| 黑人猛交| 欧美日韩人妻精品系列一区二区三区| 一区二区三区无卡视频在线观看| 啊…啊…操我用力操我| 欧美强奸一区二区诱惑| 在线综合 亚洲 欧美中文字幕| 人人妻人人爱人人玩| 97 国产精品| 蜜桃臀一区二区aV| 999 久久久| 四虎视频在线观看| 大香蕉十区| 亚洲国产精品久久久久婷婷青年| 久久婷婷五月| 日本三级韩三级99久久| 蜜乳AV一区二区三区四| 精品人体无圣光凹凸| 日本一区视频在线观看| 国产精品国产亚洲区艳妇糸列| 91丝袜| 美女91AV| 天美传媒AV在线播放| 97操b| 中文字幕精品码亚洲| 精品免费囯产一区二区三区| 九九九久| 日本布卡一区二三区| 亚洲双插| 超碰久超碰久| 九月伊人中文字幕| 爱逼综合| 目产99999久久999| 久久仑合| 嗯嗯啊好大| 久污| 精品无码一区二区三区| 2020中文字幕在线| 色69大色97香蕉| 国产精品97超碰| 9精品久久久久| 日韩猛交| 免费精品国偷自产在线在线| 100啪啪视频大全| 岛国在线免费视频| 亚洲精品无码久久AV| 国产粉嫩出水在线播放| 色色婷婷丁香| 欧美在线官网| 国产AV人人 夜夜人人澡|