로컬APM(윈도우)에서 mysql 서버로 접속해서 사용시 글자가 깨진다.

  • 현상
    • MySQL 서버 : 4.1이상, euc-kr을 기본으로 사용
      • 4.0 이하에서는 문제없음.
    • 웹서버(리눅스) + MySQL 서버 => 정상 동작
      • $sql = "show variables like '%character%'";
      • character_set_client : euckr
        character_set_connection : euckr
        character_set_database : euckr
        character_set_results : euckr
        character_set_server : euckr
        character_set_system : utf8
        character_sets_dir : /usr/local/mysql/share/mysql/charsets/
    • 로컬PC(윈도우+APM) + MySQL 서버 => 글자가 깨진다.
      • $sql = "show variables like '%character%'";
      • character_set_client : latin1
        character_set_connection : latin1
        character_set_database : euckr
        character_set_results : latin1
        character_set_server : euckr
        character_set_system : utf8
        character_sets_dir : /usr/local/mysql/share/mysql/charsets/
  • 해결 방법
    • mysql_set_charset($charset); 함수로 사용언어셋을 설정한다. (PHP 5 >= 5.2.3)
    • 위 함수가 지원 안될 경우
      mysql_query("SET NAMES {$charset}");
      을 대신 사용. 
      ($charset : 설정할 언어셋)
  • 문제 원인
    • 웹 서버(리눅스)에서 $ php -i|grep mysql 를 하였을 때 로컬 PC와의 차이점.
      • MYSQL_SOCKET => /tmp/mysql.sock
        MYSQL_INCLUDE => -I/usr/local/mysql5/include/mysql
        MYSQL_LIBS => -L/usr/local/mysql5/lib/mysql -lmysqlclient 
      • MYSQL_INCLUDE 쪽에 가서 확인해보니
        my_config.h 라는 파일 속에서
        /* Define to enable charset euckr */
        #define HAVE_CHARSET_euckr 1
        /* Define the default charset name */
        #define MYSQL_DEFAULT_CHARSET_NAME "euckr"
        /* Define the default charset name */
        #define MYSQL_DEFAULT_COLLATION_NAME "euckr_korean_ci"
        이 부분 들이 보임.
      • 즉, MySQL 을 설치할 때 기본 언어셋을 지정하여 설치하였음.
        그 MySQL을 PHP에서 사용함. 그래서 기본으로 euckr로 접속됨.
    • 로컬PC(윈도우+APM)에서는 위와 같은 내용이 안보임
      • WAPM(windows+APM) 에서는 MySQL관련 클라이언트가 설치 안되어있어도 PHP에서는 MySQL로 접속 할 수 있다.
      • 즉, PHP의 MySQL관련 파일(아마도 php_mysql.dll?)에서 위와 같은 기본 언어셋을 euckr로 설정안하고 dll파일이 만들어져서 문제가 생긴다.
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
ui_treemap new 2
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자