현재 버전

네 일단 저한테 비슷한 문제 생겼을때 (mysql, php) 제가 시도해봤던 방법을 다 나열해 보겠습니다. 이걸로 안되면 직접 테스트해보며 찾아보지 않는 이상 도와드리기 힘들 것 같아요.


1. database collation이 utf-8인지 확인

  • latin1같은 경우 ASCII + 성조 들어있는 글자들을 표현하기 때문에 북미권에서 많이 사용됩니다. 근데 DB에서 불러온 값이 정확한걸 보니 이건 세팅이 되어 있을 것 같네요.

2. 컬럼이랑 테이블 캐릭터셋이 utf-8인지 확인

  • SHOW CREATE TABLE

3. HTML이 UTF-8으로 서빙되는지 확인

  • header("Content-Type: text/html; charset=utf-8");


4. 웹서버 (아파치나...)에 디폴트 캐릭터 셋을 UTF-8으로 명시적으로 지정

5. PHP 디폴트 캐릭터 셋을 utf-8으로 지정

  • ini_set("default_charset", 'utf-8')

6. 출력에 사용되고 있는 함수의 스트링 관련 함수들이 모두 mb_<xyz> 형태의 멀티바이트 스트링 함수인지 확인.

7. mb_convert_encoding 함수로 해결 가능한지 확인



수정 이력

2020-10-15 11:01:37 에 아래 내용에서 변경 됨 #1

네 일단 저한테 비슷한 문제 생겼을때 (mysql, php) 제가 시도해봤던 방법을 다 나열해 보겠습니다. 이걸로 안되면 직접 테스트해보며 찾아보지 않는 이상 도와드리기 힘들 것 같아요.


1. database collation이 utf-8인지 확인

  • latin1같은 경우 ASCII + 성조 들어있는 글자들을 표현하기 때문에 북미권에서 많이 사용됩니다. 근데 DB에서 불러온 값이 정확한걸 보니 이건 세팅이 되어 있을 것 같네요.

2. 컬럼이랑 테이블 캐릭터셋이 utf-8인지 확인

  • SHOW CREATE TABLE

3. HTML이 UTF-8으로 서빙되는지 확인

  • header("Content-Type: text/html; charset=utf-8");


4. 웹서버 (아파치나...)에 디폴트 캐릭터 셋을 UTF-8으로 명시적으로 지정

5. PHP 디폴트 캐릭터 셋을 utf-8으로 지정

  • ini_set("default_charset", 'utf-8')

6. 출력에 사용되고 있는 함수의 스트링 관련 함수들이 모두 mb_<xyz> 형태의 멀티바이트 스트링 함수인지 확인.

7. mb_conver_encoding 함수로 해결 가능한지 확인