-
[PHP프로그래밍] &ZeroWidthSpace 문자 제거하기!! / UTF-8 변환시 물음표 생기는 현상 제거[프로그램]/IT 이야기 2022. 4. 15. 09:00728x90
프로그래밍을 하다 보면
문자의 인코딩 형식 때문에 난감할 때가 많은데요
오늘은 PHP 프로그래밍 중
Unicode 인코딩을 UTF-8로 변경할 때
혹은
웹 HTML 에디터 창에 붙여넣기를 할 때
끝에 이상한 빈 문자가 물음표(?)로 변환될 때 해결 방법을 알려드리겠습니다.
'안녕하세요
붙여넣기 테스트입니다.' 라는 문구를 복사한 후
웹 에디터 창에 붙여넣기를 했습니다.
눈으로 보기에는 이상이 없었는데
개발자도구로 확인해보니
끝에 '​'라는
문구가 붙은 것이 보입니다.
그래서 실제로 저장을 해보면
문장 끝에 물음표(?)가 붙는 것이었습니다.
'ZeroWidthSpace'를 문자 그대로 해석하면
'폭(가로)없는공간' 이란 뜻이죠?
즉, 눈으로 볼 때는 폭이 없으니 빈 공간처럼 보이지만
컴퓨터가 처리할 때는 빈 공간으로 인식한다는 의미예요!
그것을 UTF-8 인코딩으로 변환하면서
매칭 할만한 문자가 없다 보니 물음표(?)로 대체가 되는 것이죠
원인을 알았으니 해결방법은 간단하죠?
'​' 문자를 제거해주면 됩니다!!
아래의 페이지에서 해답을 찾을 수 있었습니다.
https://stackoverflow.com/questions/22600235/remove-unicode-zero-width-space-php
'​'는 16진수로
E2 80 8B 입니다.
PHP에서는
"\xE2\x80\x8B"와 같이 표현하면 됩니다.
코드 예제를 만들어보면 아래와 같습니다.
// ​ 코드 제거 $contents = preg_replace("/\xE2\x80\x8B/", "", $contents); // UTF-8로 인코딩 변환 $contents = mb_convert_encoding($contents,'CP949','UTF-8'); // 출력 echo $contents;
실제로 적용해본 결과
붙여넣기로 저장을 해도
물음표(?)와 같은 특수문자가 발생하지 않고
정상적으로 글이 등록되는 것을 확인할 수 있었답니다!!
728x90