QQ 表情極大豐富了聊天趣味。本文詳細介紹微信公眾平台開發模式下 QQ 表情的代碼對照表、發送方式、接收識別邏輯,並提供正則識別工具方法。
用戶發送 QQ 表情時,MsgType = text。表情以特定代碼形式傳輸,客戶端渲染為圖片。掌握這點,後續處理即變得清晰。
每個表情對應兩種代碼:
[呲牙]、/難過(中括號或斜杠開頭)/::D、/::((斜杠雙冒號開頭)點擊輸入框笑臉按鈕 → 選擇「QQ表情」 → 輸入框顯示文字代碼(如 [呲牙])。熟練者可直接輸入代碼發送。
TextMessage textMessage = new TextMessage();
textMessage.setContent("[難過] /難過 /::("); // 三種代碼均可
respMessage = MessageUtil.textMessageToXml(textMessage);
實測發現:後台接收到的是表情的符號代碼(如 /::D)。封裝正則判斷方法:
public static boolean isQqFace(String content) {
String qqfaceRegex = "/::\\)|/::~|/::B|/::\\||/:8-\\)|/::<|/::$|/::X|/::Z|/::'\\||/::-\\||/::@|/::P|/::D|/::O|/::\\(|/::\\+|/:--b|/::Q|/::T|/::d|/::g|/::!|/::L|/::>|/::,@|/::-S|/:\\?|/::8|/::!!!|/:xx|/:bye|/:wipe|/:dig|/:handclap|/:&-\\(|/:B-\\)|/:<@|/:@>|/::-O|/:>-\\||/:P-\\(|/::'\\||/:X-\\)|/::\\*|/:@x|/:8\\*|/:pd|/:<W>|/:beer|/:basketb|/:oo|/:coffee|/:eat|/:pig|/:rose|/:fade|/:showlove|/:heart|/:break|/:cake|/:li|/:bome|/:kn|/:footb|/:ladybug|/:shit|/:moon|/:sun|/:gift|/:hug|/:strong|/:weak|/:share|/:v|/:@\\)|/:jj|/:@@|/:bad|/:lvu|/:no|/:ok|/:love|/:<L>|/:jump|/:shake|/:<O>|/:circle|/:kotow|/:turn|/:skip|/:oY|/:#-0|/:hiphot|/:kiss|/:<&|/:&>";
return Pattern.compile(qqfaceRegex).matcher(content).matches();
}
if (XiaoqUtil.isQqFace(content)) {
textMessage.setContent(content); // 用戶發什麼,回什麼
respMessage = MessageUtil.textMessageToXml(textMessage);
}
掌握 QQ 表情代碼與識別邏輯,讓互動更生動。下一篇將解析消息創建時間 CreateTime 的轉換技巧。