원래 php 에서 한글은 3byte로 알고있습니다.
register.lib.php 에서
Copy
function count_mb_nick($reg_mb_nick)
{
if (strlen($reg_mb_nick) < 4)
return "닉네임은 한글 2글자, 영문 4글자 이상 입력 가능합니다.";
else
return "";
}
에서 한글을 어떻게 2byte로 치는건가요?
답변 3개 / 댓글 1개
채택된 답변
+20 포인트
넓은마인드
2021-10-22 (금) 13:35:03
1. utf-8 인코딩 기준으로 1글자가3byte 로 처리됩니다
2. strlen 은 영문기준으로 byte 를 쓰기 때문에
위 함수를 보완하시려면
mb_strlen($reg_mb_nick,'utf-8') 로 처리하셔야 합니다
그누보드는 닉네임이 영문,숫자,한글이 혼용되기 때문에
편의를 위해서 4로 한것이 아닐까 싶습니다
답변에 대한 댓글 1개
2021-10-22 (금) 14:17:50
2021-10-22 (금) 16:10:45
넓은마인드
2021-10-22 (금) 15:23:58
그누보드 기본 인코딩은 utf-8 입니다
strlen 의 경우 아마도 한글,영문,숫자 가 섞여서 닉네임 체크를 해야하니 저렇게 처리한것으로 보입니다
이부분은 버그게시판에 등록하시면 리자 님께서 자세히 설명해주실거 같습니다
답변을 작성하려면 로그인이 필요합니다.
utf-8 인코딩이 아니라는건가요?
strlen($reg_mb_nick) < 4 에서 한글 2글자 영어 4글자로 처리했으면
한글 1글자당 2byte 로처리했다는건데.
utf-8인코딩에서 한글 1글자가 3byte면 그누보드에서는 어떤 인코딩을 한건가요?