RoboHeart
278
2020-06-02 09:44:50 작성 2020-06-02 10:11:52 수정됨
2
105

JAVA UTF-8 관련 메서드 질문입니다.


제가 특수기호를 사용할때 ,가끔 (0000 같은것을 저장할 때

񢃬 <- 이런식으로 변환이 되더라고요.

무슨문제인지 모르겠지만 해결은 하고싶거든요

JAVA단에서 혹시 UTF-8이 아니라면 걸러내고 싶은데

관련 메서드 있을까요?

그리고 어떤 문제인지 추측해봐주실수 있나요?


스프링부트 제이슨 형식입니다.


0
0
  • 답변 2

  • 컴포지트
    1k
    2020-06-02 10:22:30

    UTF-8 에서 어떤 걸 걸러내고 싶은지는 모르겠지만 몇가지 방법이 있습니다.

    그 전에 유니코드에 대한 지식 (최소한 유니코드 숫자를 검색)이 필요합니다.

    1. Character.codePointAt("유니코드", index)

    문자열 중 하나를 뽑아 바로 코드를 뽑습니다. 만약 자바 파일 인코딩이 UTF-8 이라면 순식간에 해결됩니다. 이걸로 걸러낼 수 있습니다.

    아스키 코드를 참고하여 표시 안되는 문자를 걸러낼 수 있습니다. 표를 찾아보면 이해가 쉬울 겁니다.

    2. 정규식 (Pattern, Matcher)

    정규식으로도 원하는 유니코드를 걸러낼 수 있습니다. 예를 들어 한글만 허용하고 싶을 경우 아래처럼 쓸 수 있습니다.

    Pattern.compile("[^\\uac00-\\ud7a3]").matcher("유니코드")

    만약 표시 안되는 문자를 제외하고 싶으면 아래처럼 할 수 있습니다. 아스키 0 인 null 문자 제거를 예로 들면,

    Pattern.compile("[^\\u0000또는\\x00]").matcher("검색할문자열")


    1
  • RoboHeart
    278
    2020-06-02 10:29:09

    컴포지트님 정말 감사합니다. 

    제가 원하는 답변이였습니다. 정말 감사합니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.