4,475,420 th visitor since 2017.2.1 ( Today : 6145 )
Programming
No. 818
Name. swindler
Subject. 복잡한 유니코드의 세계
Main Cate. 개발일반
Sub Cate.
Date. 2021-04-01 17:25
Hit. 815 (121.134.199.74)
File.
최근에 작업을 하다 이상한 코드를 발견함

찾아보니 하나는
MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL, 하나는
MATHEMATICAL SANS-SERIF ITALIC CAPITAL


replaceAll("\uD835\uDE64", "o");
이렇게 하면 첫번째 케이스의 소문자 o를 변환할수는 있음

소문자 코드셋은
replaceAll("[\uD835\uDE56-\uD835\uDE6F]", "-");


두번째 케이스의 대문자 O는
replaceAll("\uD835\uDE16", "O");

뭐 이런식이다.

참고로 아래 사이트에서 코드를 찾을 수는 있다.
https://www.fileformat.info/info/unicode/char/1d616/index.htm

Java의 icu4j 라는 패키지가 있어서,
어떠거는 변환이 가능하기는 하다.

String TRANSLITERATE_ID = "NFD; Any-Latin; NFC";
String NORMALIZE_ID = "NFD; [:Nonspacing Mark:] Remove; NFC";

String r = cRowSet.getString("TITLE");
temp = Transliterator.getInstance(TRANSLITERATE_ID + "; " + NORMALIZE_ID).transform(r);
log.debug("R : " + r);
log.debug("ICU4 : " + temp);
out.println("<br>ICU4 : " + temp);

temp = Transliterator.getInstance("Any-Latin; NFD; [^\\p{Alnum}] Remove").transform(r);
log.debug("R : " + r);
log.debug("ICU4 : " + temp);
out.println("<br>ICU4 : " + temp);

temp = Transliterator.getInstance("Traditional-Simplified").transform(r);
log.debug("R : " + r);
log.debug("ICU4 : " + temp);
out.println("<br>ICU4 : " + temp);

temp = Transliterator.getInstance("Any-Latin; Latin-ASCII").transform(r);
log.debug("R : " + r);
log.debug("ICU4 : " + temp);
out.println("<br>ICU4 : " + temp);








[바로가기 링크] : http://coolx.net/cboard/develop/818



Name
Password
Comment
Copyright © 1999-2017, swindler. All rights reserved. 367,611 visitor ( 1999.1.8-2004.5.26 ), 2,405,771 ( -2017.01.31)

  2HLAB   2HLAB_Blog   RedToolBox   Omil   Omil_Blog