로컬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}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
4.28
4.29
4.30
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
5.27
5.28
5.29
5.30
5.31
6.1