java emoji顯示亂碼_Java 解決Emoji表情過濾問題

Emoji表情從三方數據中獲取沒有過濾,導致存入DB的時候報錯。

2a1d0a7f62b9c547a069d5a4c186a62d.png

原因:

UTF-8編碼有可能是兩個、三個、四個字節。Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,所以數據插不進去。

方法1.將已經建好的表也轉換成utf8mb4

2,寫個工具類:過濾掉emoji表情符號

public class EmojiFilter {

private static boolean isEmojiCharacter(char codePoint) {

return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA)

|| (codePoint == 0xD)

|| ((codePoint >= 0x20) && (codePoint <= 0xD7FF))

|| ((codePoint >= 0xE000) && (codePoint <= 0xFFFD))

|| ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF));

}

/**

* 過濾emoji 或者 其他非文字類型的字符

*

* @param source

* @return

*/

public static String filterEmoji(String source) {

if (StringUtils.isBlank(source)) {

return source;

}

StringBuilder buf = null;

int len = source.length();

for (int i = 0; i < len; i++) {

char codePoint = source.charAt(i);

if (isEmojiCharacter(codePoint)) {

if (buf == null) {

buf = new StringBuilder(source.length());

}

buf.append(codePoint);

}

}

if (buf == null) {

return source;

} else {

if (buf.length() == len) {

buf = null;

return source;

} else {

return buf.toString();

}

}

}

3,使用別人封裝的一個類,專門解決emoji問題的。這個在git上有開源的代碼。在pom工程中引入(最方便)

com.vdurmont

emoji-java

4.0.0

如果幫助到你,給點鼓勵點個推薦吧親

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534844.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534844.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534844.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mongotemplate中save拋出異常_異常處理的三個好習慣 | Python 工匠

文 | piglei 編輯 | EarlGrey推薦 | 編程派(微信ID&#xff1a;codingpy)前言如果你用 Python 編程&#xff0c;那么你就無法避開異常&#xff0c;因為異常在這門語言里無處不在。打個比方&#xff0c;當你在腳本執行時按 ctrlc 退出&#xff0c;解釋器就會產生一個 KeyboardI…

java 百度網盤上傳_使用pcs api往免費的百度網盤上傳下載文件的方法

百度個人云盤空間大&#xff0c;完全免費&#xff0c;而且提供了pcs api供調用操作文件&#xff0c;在平時的項目里往里面保存一些文件是很實用的。環境準備&#xff1a;開通讀寫網盤的權限及獲取access_token:http://blog.csdn.net/langyuezhang/article/details/47206621百度…

python縮進教學_Python縮進和選擇學習

縮進Python最具特色的是用縮進來標明成塊的代碼。我下面以if選擇結構來舉例。if后面跟隨條件&#xff0c;如果條件成立&#xff0c;則執行歸屬于if的一個代碼塊。先看C語言的表達方式(注意&#xff0c;這是C&#xff0c;不是Python!)if ( i > 0 ){ x 1; y 2;}如果i …

php如何新建xml文件,PHP中的生成XML文件的4種方法分享

生成如下XML串Xml代碼title1content12009-10-11title2content22009-11-11方法I.【直接生成字符串】使用純粹的PHP代碼生成字符串&#xff0c;并把這個字符串寫入一個以XML為后綴的文件。這是最原始的生成XML的方法&#xff0c;不過有效&#xff01;$data_array array(array(ti…

組態王能直接讀取儀表數據嗎_液晶多功能網絡電力儀表PD800H

液晶多功能網絡電力儀表PD800H-H44三相三線多功用電力表面&#xff0c;一般也被稱作網絡電力表面&#xff0c;它是一種數字化的監控設備&#xff0c;其功用集成了電量測量&#xff0c;情況監控&#xff0c;遠程通訊為一體&#xff0c;作業原理上選用了現代核算機技術和數字信號…

python程序顯示自己的版權_手把手教你Pycharm皮膚主題及個性化設置,python程序員必備-Go語言中文社區...

1.設置IDE皮膚主題File -> Settings -> Appearance -> Theme -> 選擇“Alloy.IDEA Theme”根據自己的喜好設置字體大小&#xff0c;以及樣式。2.修改字體大小File -> Settings > Editor -> Colors & Fonts -> Font -> Size -> 設置為“14”3…

java多線程activemq,多線程JMS客戶端ActiveMQ

我正在使用以下代碼創建多個JMS會話&#xff0c;以供多個使用者使用消息。我的問題是代碼以單線程方式運行。即使消息存在于隊列中&#xff0c;第二個線程也無法接收任何內容&#xff0c;而是繼續輪詢。同時&#xff0c;第一個線程完成對第一批的處理&#xff0c;然后返回并使用…

python cnn 實例_基于CNN的紋理合成實踐【附python實現】

Q0: Preliminary knowledge of Texture SynthesisBaseline請見此處&#xff0c;下文所有的代碼修改均建立此代碼基礎之上。1. 紋理合成簡述?紋理合成(Texture Systhesis)技術主要應用于計算機圖形學等領域&#xff0c;被用于模擬幾何模型的表面細節、增強繪制模型的真實感。不…

php使用jasperreport,php-報表引擎指南(Pentaho,JasperReports,BIRT)

我在各種論壇和他們的網站上花費了大約4-5個小時,研究可以幫助我發展的報告工具.我是使用這種工具的新手,可以使用一些特定的指導.我正在開發一個Web應用程序,該應用程序將托管在一臺服務器上,但是多個用戶可以通過登錄進行訪問.每個用戶將擁有自己的帳戶,并且只能訪問僅與與其…

python中dlib庫_python 基于dlib庫的人臉檢測的實現

本周暫時比較清閑&#xff0c;可以保持每日一更的速度。國外身份證項目新增需求&#xff0c;檢測出身份證正面的人臉。最開始考慮mobilenet-ssd&#xff0c;經同事提醒&#xff0c;有現成的人臉庫dlib&#xff0c;那就用傳統方法嘗試一下。dlib安裝dlib的安裝小費一波周折&…

php養老院管理系統,XYCMS養老院建站系統 v3.8

XYCMS養老院建站系統是一個專為養老院而設計的養老院建筑系統。中心信息管理&#xff1a;包括基本信息管理&#xff0c;添加&#xff0c;問答中心信息管理新聞動態管理&#xff1a;管理新聞信息內容&#xff0c;管理相關分類&#xff0c;添加或者刪除生活環境內容管理&#xff…

php 修改文件訪問時間,PHP中獲取文件創建日期、修改日期、訪問時間的方法

php獲取文件創建時間、修改時間常用代碼filemtime ( string filename )返回文件上次被修改的時間&#xff0c;出錯時返回 FALSE。時間以 Unix 時間戳的方式返回&#xff0c;可用于 date()。例如&#xff1a;$afilemtime("log.txt");echo "修改時間&#xff1a;&…

超過響應緩沖區限制_Nginx如何限制并發連接數和連接請求數?

全網最全1500份Java學習資料、500份BAT面試真題&#xff1a;關注公眾號&#xff0c;輸入“面試題”&#xff0c;獲取提取碼&#xff01;首先講解兩個算發&#xff1a;算法思想是&#xff1a;令牌以固定速率產生&#xff0c;并緩存到令牌桶中&#xff1b;令牌桶放滿時&#xff0…

Php公鑰加密data是空,php 生成加密公鑰加密私鑰實例詳解

php 生成加密公鑰加密私鑰實例詳解生成公鑰私鑰 win下必須要openssl.cof支持 liunx一般已自帶安裝$config array(//"digest_alg" > "sha512","private_key_bits" > 512, //字節數 512 1024 2048 4096 等"private_key_type" >…

python句柄無效_subprocess.Popen 運行windows命令出現“句柄無效”報錯的解決方法

【代碼筆記】iOS-關于UIFont的一些define一,效果圖. 二,工程圖. 三,代碼. RootViewController.h #import interface RootViewController ...JQuery Datatables Dom 和 Language 參數詳細說明http://linleizi.iteye.com/blog/2086435 *********************************** Data …

java日期函數精確到日,java日期時間函數分享

前言&#xff1a;對于新手程序員的我來說&#xff0c;寫業務代碼是現在的日常&#xff0c;在此過程中經常需要對日期時間進行處理&#xff0c;我挑了幾個較有用的日期處理函數分享給大家。正文&#xff1a;1、將某格式的時間字符串轉化成毫秒時間戳表示的字符串&#xff1a;pub…

python變量區變量保存與加載_python – Flask:使用全局變量將數據文件加載到內存中...

我有一個大的XML文件,它被打開,加載到內存中,然后由Python類關閉.簡化示例如下所示&#xff1a;class Dictionary():def __init__(self,filename):f open(filename)self.contents f.readlines()f.close()def getDefinitionForWord(self,word):# returns a word,using etree p…

php 順豐接口實例,順豐BSP接口PHP開發注意事項

1&#xff0c;xml報文不用附加"<?xml version"1.0" encoding"UTF-8" ?>"&#xff0c;不支持&#xff0c;會報格式錯誤。2&#xff0c;提交服務器時要重點注意。直接使用curl方式的&#xff0c;一定要把數據做http_build_query&#xff0…

跨域產生的原因和解決方法_板式家具開料機加工過程產生崩邊原因及解決方法...

家具廠數控開料機加工材料的時候會遇到材料崩邊的問題&#xff0c;下面我們系統的分析下產生的原因以及解決的辦法產生崩邊現象的原因&#xff1f;其一是材料本身問題。目前除了實木家具&#xff0c;目前使用較多的就是 板式貼皮的材料&#xff0c;板材的優點就是標準化生產&am…

facade 門面 php,php設計模式之門面(Facade)模式

該模式屬于結構型模式什么是門面模式&#xff1f;定義&#xff1a;門面模式(有時候也稱為外觀模式)是指提供一個統一的接口去訪問多個子系統的多個不同的接口&#xff0c;它為子系統中的一組接口提供一個統一的高層接口。外部與子系統的通信是通過一個門面(Facade)對象進行。其…