웹 게시판에서 글을 작성하고 스페이스가 들어간 것을 바로 ;nbsp로 DB(mysq)로 저장하면,
유니코드 00A0으로 저장된다. 이를 '줄 바꿈 없는 공백' (no break whitespace)이라 한다.
space가 아니기 때문에 의도된 프로그래밍에 실패할 수 있다.
아래 예제는 단순히 공백으로 보이지만, 사실 유니코드 00A0 가 들어있는 String이다.
String s = " ";
String x = s.replaceAll("\\s", "");
System.out.println(x.length());
결과는 1이다. 00A0는 정규표현식의 space가 아니기 때문에 replace되지 않는다.
String s = " ";
String x = s.trim();
System.out.println(x.length());
재미있는 것은 trim()을 써도 되지 않는다. trim()의 구현이 단순히 whitespace만 정리해주는 코드로 되어 있다.
따라서, 00A0를 replace하기 위해서는 아래와 같이 반드시 unicode를 써야 한다.
String s = " ";
String x = s.replaceAll("\\u00A0", "");
System.out.println(x.length());
결과는 0이다.
출처 :
http://ko.wikipedia.org/wiki/%EC%A4%84_%EB%B0%94%EA%BF%88_%EC%97%86%EB%8A%94_%EA%B3%B5%EB%B0%B1
'scribbling' 카테고리의 다른 글
(펌질) Devops 관련 다른 측면 글 (0) | 2015.03.14 |
---|---|
(펌질) micro service rebuilding (0) | 2015.03.14 |
골판지 장난감(rukuten-howay) 유행 될듯.. (0) | 2015.03.05 |
HTTP/2.0 (0) | 2015.02.27 |
스크랩 - Linux Profiling at Netflix (0) | 2015.02.24 |