웹 게시판에서 글을 작성하고 스페이스가 들어간 것을 바로 ;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


http://www.fileformat.info/info/unicode/char/00a0/index.htm

'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
Posted by '김용환'
,