테스트 사이트 - 개발 중인 베타 버전입니다

닉네임 한글 질문드립니다. 채택완료

그켬민 4년 전 조회 1,769

원래 php 에서 한글은 3byte로 알고있습니다.

register.lib.php 에서

 

</p>

<p>function count_mb_nick($reg_mb_nick)</p>

<p>{</p>

<p>    if (strlen($reg_mb_nick) < 4)</p>

<p>        return "닉네임은 한글 2글자, 영문 4글자 이상 입력 가능합니다.";</p>

<p>    else</p>

<p>        return "";     </p>

<p>}</p>

<p>

 

에서 한글을 어떻게 2byte로 치는건가요?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

1. utf-8 인코딩 기준으로 1글자가3byte 로 처리됩니다

2. strlen 은 영문기준으로 byte 를 쓰기 때문에 

 

위 함수를 보완하시려면

mb_strlen($reg_mb_nick,'utf-8') 로 처리하셔야 합니다

 

그누보드는 닉네임이 영문,숫자,한글이 혼용되기 때문에

편의를 위해서 4로 한것이 아닐까 싶습니다

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

그켬민
4년 전
그러면 기본적으로 그누보드에서의 닉네임 길이 체크함수는
utf-8 인코딩이 아니라는건가요?

strlen($reg_mb_nick) < 4 에서 한글 2글자 영어 4글자로 처리했으면
한글 1글자당 2byte 로처리했다는건데.

utf-8인코딩에서 한글 1글자가 3byte면 그누보드에서는 어떤 인코딩을 한건가요?

댓글을 작성하려면 로그인이 필요합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

그누보드 기본 인코딩은 utf-8 입니다

strlen 의 경우 아마도 한글,영문,숫자 가 섞여서 닉네임 체크를 해야하니 저렇게 처리한것으로 보입니다 

 

이부분은 버그게시판에 등록하시면 리자 님께서 자세히 설명해주실거 같습니다

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인