Sky Archive

Java

[Java] Emoji 문자 제거

KingPork 2021. 7. 19. 12:33

현재 웹에서 제공하는 이모지 [ win + . ] 또는 모바일 단말기에서 제공하는 특수문자들이

유니코드이지만 DB에 저장 시 지원하지 않는 경우 에러를 유발하게 됩니다. 😊

정확하게는 uft8mb4를 지원하도록 초기에 설정하는 게 좋지만, 그러지 못한 경우 이모지가 들어갈 경우 

에러가 발생합니다. 이러한 문제 때문에 이모지 제거 작업을 정리해봤습니다. 😆

 

웹에서 제공하는 이모지 [ win + . ]

Emoji 제거 방법 🤞

1. [Java] Emoji 제거

   -  Emoji 제거 작업에 있어서 구글링 하여 가장 간단하게 찾을 수 있는 Java에서 이모티콘을 공백으로

     치환하는 방식입니다. 해당 방식을 사용하면 하이픈 ( - ) 도 공백으로 치환이 되어 권장드리지 않습니다.

Pattern emoji = Pattern.compile("[\\uD83C-\\uDBFF\\uDC00-\\uDFFF]+");
Matcher emojiMatcher = emoji.matcher( text );
text = emojiMatcher.replaceAll(" ");

 

2. [Javascript] Emoji 제거

   - Javascript Emoji 제거 작업입니다.

 

   참고 : https://stackoverflow.com/questions/10992921/how-to-remove-emoji-code-using-javascript

function removeEmojis (string) {
  var regex = /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]
              |[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c
              [\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]
              |\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f
              |\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]
              |\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04
              |[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a
              |\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934
              |\u2935|[\u2190-\u21ff])/g;
  return string.replace(regex, '');
}

 

3. [Java] Emoji 라이브러리 사용

   - 세 개의 Emoji 제거 방법에 대해서 가장 권장드리고 싶은 옵션이다.

    자바 이모지 라이브러리를 사용하여 보다 프로그래밍적인 제어를 하는 것입니다.

    pom.xml에 추가시켜 모든 메이븐 프로젝트에 자바 이모지 파서를 추가할 수 있다.

    Emoji 파서 도구는 이모지를 제거할 뿐만 아니라 이모지를 텍스트 기반 별칭으로 변환한다.

<!-- pom.xml 설정 방법 -->
<!-- https://mvnrepository.com/artifact/com.vdurmont/emoji-java -->
<dependency>
    <groupId>com.vdurmont</groupId>
    <artifactId>emoji-java</artifactId>
    <version>5.1.1</version>
</dependency>

 

   - Emoji 파서 사용법

String kingPork = " king Pork. 🤞🤣🤞 ";
String emojiRemoved = EmojiParser.removeAllEmojis(kingPork);
System.out.println(emojiRemoved); 

 result = king Pork.