▶ 주제 : 반각문자 @와 전각문자 @
반각문자와 전각문자에 대해 알아보고 실제 프로그래밍 상황에서 어떤 문제가 발생하는지에 대해 알아보자.
▶ 상황
다국어를 지원하는 모바일 앱을 개발 및 테스트 하던 도중 일본어 환경에서 회원가입이 되지 않는 문제가 발생하였다.
정규식을 통해 이메일 형식 아이디를 입력받게 구현되있었는데, 제대로 입력했음에도 정규식이 통과하지 않는 것이었다!
▶ 원인
위의 상황이 발생한 원인은 일반적인 자판의 반각 골뱅이표시(@)와 일본어 자판의 전각 골뱅이표시(@)가 서로 다른 문자이기 때문에 반각 골뱅이표시만으로 이메일 형식을 검사하는 정규식에 통과하지 못했던 것이다.
즉, 두 골뱅이표시를 나타내는 유니코드가 각각 다르다. 완전히 다른 문자라는 것이다.
(이 글을 보고있는 환경에 따라서 두 골뱅이가 똑같이 보일 수도 있음)
한국과 일반적인 영어권 국가에서는 아스키 반각 문자를 사용하는데 일본은 아스키 문자를 반각 & 전각 혼용해서 사용한다.
▶ 전각문자와 반각문자
컴퓨터상에서 글자를 표현할 때 글자의 폭을 정사각형으로 표현하는 것이 전각문자이며, 전각문자의 가로폭을 절반으로 줄인것이 반각문자이다.
한자 문화권에서 제일 많이 쓰이는 개념이며, 이외에도 확장 로마자의 경우에 인코딩 방식에 따라서 전각/반각이 나뉘어지는 경우도 있다.
한자와 히라가나, 한글은 모두 전각문자이며, 한국에서 사용하는 특수문자들은 99% 반각문자로 사용하고 있다.
자세히 보면 생김새도 다르고 전각문자가 반각문자보다 더 좌우로 퍼져있는 형태로 보인다.
하지만 뷰어에 따라서 똑같이 보일 수도 있다.
그렇다면 다시 위의 문제로 돌아가서 전각 골뱅이와 반각 골뱅이를 컴퓨터가 다르게 인식하는지 확인해보자.
// 왼쪽이 반각, 오른쪽이 전각
console.log('@' == '@');
정말로 다르게 인식한다.
반각 골뱅이의 유니코드는 U+0040, 전각 골뱅이의 유니코드는 U+FF20으로 서로 다른 문자로 인식하는 것이 확실해졌다.
그렇기 때문에 프로그래머는 다국어 서비스(특히 일본)를 개발할 때 전각문자를 반각문자로 자동 치환해주는 작업을 고려할 필요가 있다.
(※ 전각문자로 숫자를 쓰면 대부분의 환경에서 숫자가 아니라 문자열로 인식한다.)
▶ 참조
▷ 위키피디아 :
'Programming > 프로그래밍 이론' 카테고리의 다른 글
[프로그래밍 이론] In-app browser, External browser (1) | 2020.07.03 |
---|---|
[프로그래밍 이론] 두 점 사이의 절대각도를 재는 atan2 (3) | 2020.06.03 |
[프로그래밍 이론] JWT (Json Web Token) (0) | 2019.04.19 |
[디자인 패턴] 팩토리 메소드 패턴 (Factory method pattern) (0) | 2019.03.20 |
[디자인 패턴] 복합체 패턴 (Composite pattern) (0) | 2019.03.12 |
댓글