채택완료

왜 한글이 깨질까요?

<meta charset="UTF-8">
<?php
function generateRandomString($length = 10) {
    $characters = '가나다라마바사아자차카타파하0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '5';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
echo generateRandomString();
?>

왜 한글 부분이 깨지는 걸까요? 

파일도 utf8 

서버도 utf8

한글텍스트만 있을 때 안 깨지는데..... 신기합니다. ㅜㅜ

|

답변 1개 / 댓글 2개

채택된 답변
+20 포인트
2018-08-07 (화) 16:44:38

문자별로 해당 하는 바이트 단위가 달라 생기는 문제로 알고 있습니다

Copy
<?php

function generateRandomString($length = 10) {

$characters = '가나다라마바사아자차카타파하0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

$charactersLength = mb_strlen($characters);

$randomString = '5';

for ($i = 0; $i < $length; $i++) {

      $randomString .= mb_substr($characters,rand(0, $charactersLength - 1),1,'UTF-8');

}

return $randomString;

} 

echo generateRandomString();

 

이런식으로 변경해보세요

?>

답변에 대한 댓글 2개

어떤 요술을 부리셨어요? ㅋ 아주 잘 되네요. ^^ 감사합니다.
UTF-8을 명시했군요?!

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