본문 바로가기

컴퓨터와 인터넷

mysql에 있는 한글이 홈페이지에서 깨져나오는데 안깨지게하는 방법

728x90
반응형

 

홈페이지에서 MySQL에 저장된 한글이 깨져 나오는 문제문자 인코딩 설정 불일치 때문에 발생하는 경우가 대부분입니다.


✅ 한글 깨짐 해결 순서 (필수 체크 4단계)

1️⃣ MySQL 테이블/컬럼 인코딩 확인

SHOW CREATE TABLE 테이블명;

결과에서 CHARSET=utf8 또는 CHARSET=utf8mb4인지 확인하세요.

한글이 제대로 나오려면 utf8 또는 utf8mb4로 설정되어야 합니다.

✏️ 변경 방법 (필요 시)

ALTER TABLE 테이블명 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
 

2️⃣ 웹 페이지의 HTML 헤더 확인

HTML <head> 안에 다음이 있는지 확인하세요:

<meta charset="UTF-8">

없으면 반드시 추가하세요. (EUC-KR이면 그것에 맞춰야 하며, UTF-8로 통일하는 것을 권장합니다.)


3️⃣ DB 연결 시 인코딩 설정

PHP 사용 중이라면, mysqli 또는 mysql 연결 후에 다음을 추가합니다:

 
mysqli_query($conn, "SET NAMES 'utf8'");

또는 PDO 사용 시:

 
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'user', 'pass');

utf8mb4를 사용하는 경우에는 'utf8'을 'utf8mb4'로 바꿔주세요.


4️⃣ DB 자체 설정 확인 (my.cnf)

my.cnf 또는 my.ini 설정 파일에서 아래 설정을 확인하거나 추가:

 
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_general_ci [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4

MySQL을 재시작해야 반영됩니다:

sudo systemctl restart mysql

🧪 테스트 팁

 
header("Content-Type: text/html; charset=UTF-8"); echo "한글 출력 테스트";

이렇게 한글이 깨지지 않으면 웹 서버와 PHP 인코딩은 정상입니다.


✅ 예시 정리

위치설정 예시
HTML 헤더 <meta charset="UTF-8">
PHP 연결 코드 mysqli_query($conn, "SET NAMES 'utf8'");
DB 테이블 인코딩 utf8 또는 utf8mb4
my.cnf 설정 character-set-server=utf8mb4 등
728x90
반응형