이베리스
Iberis
이베리스
전체 방문자
오늘
어제
  • 전체보기 (72)
    • Course (64)
      • MS-SQL (10)
      • MY-SQL (12)
      • Oracle (2)
      • PostgreSQL (1)
      • ASP.NET with C# (5)
      • PHP (14)
      • Java (1)
      • javaScript (11)
      • A quick tip (1)
      • CodeIgniter (1)
      • CSS (3)
      • 운영체제 (2)
      • Git (1)
      • 리눅스 (0)
    • Utility (4)
    • 와우 (2)
      • 애드온 (2)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 15517
  • 접속안됨
  • 3자리
  • 쿼리
  • table
  • MSSQL
  • 공유폴더
  • 와우클래식
  • share
  • 삭제
  • 테이블 복사
  • power point
  • 보안 주체
  • error
  • 자동 줄 바꿈
  • 이베리스
  • 콤마
  • comma
  • 1326
  • 렌카드
  • 수동삭제
  • Elv
  • wowclassic
  • 테이블
  • dbo
  • 구조 복사
  • width
  • 19c
  • Benik
  • 3DP

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
이베리스

Iberis

Course/MY-SQL

mysql 한글 깨짐 문제 해결

2015. 11. 23. 09:13

요즘같은 글로벌화 시대에 발맞춰 UTF-8을 써보기로 했다...(사실 아직도 UTF-8의 소중함을 잘 모른다는...- _-;;;)

아무튼 시작하기 전에 다음이 중요하다.

 

1. PHP파일을 코딩할 때에 메모장(나같은 경우는 메모장 매니아;;;)나 에디트플러스같은 툴을 쓸 때에 인코딩을 UTF-8으로 저장하는 것을 잊지 말자. 에디트플러스의 경우 잘 모르겠지만, 메모장의 경우 저장할 때에 가장 밑에 ANSI로 기본설정이 되어 있는 것을 UTF-8으로만 바꿔서 저장해주면 된다.

 

2. <head>내에는 꼭 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">을 포함시켜 주는 것을 잊지 말자.

 

3. MySQL 데이터 베이스가 UTF-8을 사용하고 있는지 확인해본다. 만약 MySQL-front를 사용하고 있다면 간단히 변수라고 쓰여 있는 곳을 보면

 

character_set_client

character_set_connection

character_set_database

character_set_result

character_set_server

character_set_system

 

이런 항목들을 볼 수가 있는데 모두 UTF-8으로 고쳐주도록 하자. 잘 모르기때문에 혹시나 하는 맘에 다 하라고 하는 것이다...;;;

 

4. 그럼에도 불구하고 나같은 경우 PHP로 만들어진 페이지에서 값을 입력하면 한글값이 깨져 MySQL에 들어가서 조건문을 제대로 만족시키지 못하고 온갖 쓰레기 값들이 쏟아져 나오는데 또 이것이 다시 값이 깨져서 돌아올 땐 "??????12?????" 뭐 이런 물음표의 바다로 사용자를 날려보낸다...- _-;;;;

그럼 이제 어떻게 해야할까??

 

간단하다.

 

당신이 만든 소스에 DB에 커넥트하는 부분이 있을 것이다. 여기서 기본적으로 UTF-8으로 값을 주고받겠다는 설정을 해주는 것이다.

예를 들어 나의 dbconn.php라는 소스를 보면

<?
$host="localhost";
$user="root";
$pass="swaytv";
$dbname="swaytv";
$conn = mysql_connect($host, $user, $pass) or die("mysql_connect Error!!! 사용자명 또는 사용자 비밀번호를 확인하세요.");
mysql_select_db($dbname, $conn) or die("mysql_select_db Error!!! 사용 Database 이름을 확인하세요.");
?>

일반적으로 다들 이렇게 소스를 작성할 것이다.

하지만 이럴 경우 이유는 잘 모르지만 UTF-8인코딩 방식이 아닌 다른 방식으로 정보가 소통하게 된다.

 

따라서!!

<?
$host="localhost";
$user="root";
$pass="swaytv";
$dbname="swaytv";
$conn = mysql_connect($host, $user, $pass) or die("mysql_connect Error!!! 사용자명 또는 사용자 비밀번호를 확인하세요.");
mysql_select_db($dbname, $conn) or die("mysql_select_db Error!!! 사용 Database 이름을 확인하세요.");
mysql_query('set names utf8');

?>

 

저 초록색 부분을 쓰는 것을 잊지 말자.

접속과 동시에 사용하는 캐릭터셋을 UTF-8으로 맞춰준다.(절대로 '-'는 쓰지 않는다. MySQL은 MySQL4이후부터 -는 쓰지 않는다.)


출처 : http://sdcho7.egloos.com/2518559

저작자표시 비영리 변경금지 (새창열림)

'Course > MY-SQL' 카테고리의 다른 글

Error Code: 1153 - Got a packet bigger than 'max_allowed_packet' bytes  (0) 2016.07.01
MySQL에서 MINUS와 INTERSECT 집합 연산  (0) 2015.12.03
MySQL : 테이블 복사 (다른 DB간 테이블 복사 포함)  (0) 2015.10.14
MySql 계층적 조회 쿼리  (0) 2015.05.12
MSSQL에서 MySQL 스토어드 프로시저(Stored PROCEDURE) 변경방법  (0) 2015.04.30
    'Course/MY-SQL' 카테고리의 다른 글
    • Error Code: 1153 - Got a packet bigger than 'max_allowed_packet' bytes
    • MySQL에서 MINUS와 INTERSECT 집합 연산
    • MySQL : 테이블 복사 (다른 DB간 테이블 복사 포함)
    • MySql 계층적 조회 쿼리
    이베리스
    이베리스
    Developer

    티스토리툴바