最近有个webservice报错,原因是穿了一些非法字符。
一问,用户手机填了表情包--绘文字,emoji
处理绘文字,还得看日本人,emoji就是绘文字的日语发音。。。
倒不一定是他们发明的,但这帮人太喜欢用这个了,翻盖手机的年代就开始玩这个了。
https://lets-emoji.com/emojilist/emojilist-1/
https://cyzennt.co.jp/blog/2019/07/13/__trashed/
所有的绘文字?
推特上实时统计的绘文字使用量!
http://www.emojitracker.com/
正则表达式匹配
https://www.web-dev-qa-db-ja.com/ja/java/%E6%96%87%E5%AD%97%E5%88%97%E3%81%8B%E3%82%89%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E7%B5%B5%E6%96%87%E5%AD%97%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F/1048492243/
这个写得倒是挺规整,可惜不对。。。。
https://www.faqcode4u.com/faq/213749/how-to-deal-with-invalid-characters-in-a-ws-output-when-using-cxf
/** * From xml spec valid chars:<br> * #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]<br> * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.<br> * @param text The String to clean * @param replacement The string to be substituted for each match * @return The resulting String */ public static String CleanInvalidXmlChars(String text, String replacement) { String re = "[^\u0009\r\n\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF]"; return text.replaceAll(re, replacement); }
这位写得好,是.net版本
https://www.cnblogs.com/Death/archive/2012/02/28/2371117.html
wiki
https://ja.wikipedia.org/wiki/%E7%B5%B5%E6%96%87%E5%AD%97
这一段可以用:
https://ja.getdocs.org/java-string-remove-emojis
次の例では、Unicodeポイントを使用して2つのUnicode範囲の絵文字を削除します。 @Test public void whenRemoveEmojiUsingCodepoints__thenSuccess() { String text = "la conférence, commencera à 10 heures ?"; String result = text.replaceAll("[\\x{0001f300}-\\x{0001f64f}]|[\\x{0001f680}-\\x{0001f6ff}]", ""); assertEquals(result, "la conférence, commencera à 10 heures "); } 現在利用可能な絵文字とそのコードポイントの全リストはhttps://unicode.org/emoji/charts/full-emoji-list.html[ここ]にあります。
这个看起来比较全了,是个官方组织
https://unicode.org/emoji/charts/full-emoji-list.html
这个是上面博客中推荐的绘文字处理库
<dependency>
<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
<version>4.0.0</version>
</dependency>
使用方法:
それでは、__ emoji-java を使って、String__から絵文字を削除する方法を見てみましょう。 @Test public void whenRemoveEmojiUsingLibrary__thenSuccess() { String text = "la conférence, commencera à 10 heures ?"; String result = EmojiParser.removeAllEmojis(text); assertEquals(result, "la conférence, commencera à 10 heures "); } ここでは、 EmojiParser ** .の removeAllEmojis() メソッドを呼び出しています。 parseToAliases() メソッドを使用して、emojiをそのエイリアスに置き換えるために EmojiParser を使用することもできます。 @Test public void whenReplaceEmojiUsingLibrary__thenSuccess() { String text = "la conférence, commencera à 10 heures ?"; String result = EmojiParser.parseToAliases(text); assertEquals( result, "la conférence, commencera à 10 heures :sweat__smile:"); } emojiをそれらの別名に置き換える必要がある場合、このライブラリを使用することは非常に便利です。 ただし、emoji-javaライブラリは絵文字しか検出できませんが、記号やその他の特殊文字を検出することはできません。
次の例では、Unicodeポイントを使用して2つのUnicode範囲の絵文字を削除します。
@Test
public void whenRemoveEmojiUsingCodepoints__thenSuccess() {
String text = "la conférence, commencera à 10 heures ?";
String result = text.replaceAll("[\\x{0001f300}-\\x{0001f64f}]|[\\x{0001f680}-\\x{0001f6ff}]", "");
assertEquals(result, "la conférence, commencera à 10 heures ");
}
現在利用可能な絵文字とそのコードポイントの全リストはhttps://unicode.org/emoji/charts/full-emoji-list.html[ここ]にあります。
标签:文字,String,text,81%,E3%,https,emoji From: https://www.cnblogs.com/tekikesyo/p/16607520.html