ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • EUC-KR과 UTF-8 정리, 웹페이지 개발의 영원한 화두
    정보통신에너지/웹프로그래밍 2014. 4. 2. 05:00


     

     

     

     

     

    웹페이지 개발을 하다보니..

     

    영원히 피해갈 수 없는 화두인 언어문제, EUC-KR과 UTF-8 문제에 부딪쳤습니다.

     

     

    사이트간 데이터 교환을 위해서 인코딩해서 데이터를 날리고..

     

    데이터를 받아서 디코딩하고.. 뭐 이런 구현을 하는게 있는데,

     

    중간에 자꾸 데이터가 소실되는 겁니다.

     

     

    어떤 데이터는 잘 가고..

     

    어떤 데이터는 잘 안가고..

     

    그 어떤 규칙성이 존재하는건가?

     

    유심히 관찰한 결과..

     

    EUC-KR 문제라는 것을 알았습니다.

     

    사실 정확한 원리까지 낱낱히 파해치진 못했지만..

     

     

    어쨌든 EUC-KR 완성형 한글은 표현하지 못하는 문자들이 존재합니다.

     

    그리고 그 문자들이 데이터그램에 포함되었을 때..

     

    인코딩과 디코딩 과정에서 에러로 인식되서 통신이 안되는게 아닐까.. 생각을 해봤습니다.

     

     

    그래서 디버깅을 통해서 알아보았는데..

     

    결론적으로 문제를 해결했고 EUC-KR과 UTF-8 개발 관련 사항들을 간략히 정리해보겠습니다.

     

     

     

    1. 기본적으로 UTF-8과 EUC-KR 간의 변수 변환은

     

    $content = iconv('eucKR','UTF-8',$content);

     

    명령어를 쓰면 해결된다. 이 떄, 대문자 소문자를 잘 맞추는 것이 중요하다.

     

     

    2. 사실 EUC-KR과 UTF-8 변환문제는 PHP와 MYSQL과 뗼레야 떼기 힘든 문제다.

     

    만약 PHP와 MYSQL을 사용한다면.. 코딩 자체가 뿐만 아니라 MYSQL에 저장되는 형태까지도 신경을 써야한다.

     

    이 때,, 한큐에 해결하는 방법이 있다. 바로

     

    mysql_query('set names utf8');

     

    이 명령어를 쓰는거다. 이것은 MYSQL에 저장될때 UTF-8 형태가 인식되도록 쿼리를 넣는 명령어다.

     

    만약 이것을 쓰지 않을 경우 EUC-KR 으로 인식되어 MYSQL에 저장될 수가 있고..

     

    문자들은 제대로 구현이 안되거나 다 깨져버릴 것이다.

     

     

     

    참고로 EUC-KR만 쓰거나 UTF-8만 쓰거나 한는 경우에는 큰 문제가 없다.

     

    별로 복잡한 것도 없고..

     

    근데 문제는 여러 사이트들이 서로 연동되거나 통신을 해야하는 경우에..

     

    우리나라 환경 상, EUC-KR 웹사이트와 UTF-8 웹사이트들이 동시에 얽히는 경우가 다반사이므로..

     

    그 두가지 한글 형태가 섞이는 경우에 상당히 골치아파진다.

     

     

    그러나 사실 잘 생각해보면 문제가 그리 복잡하지는 않다.

     

     

    잘 변환을 해주거나.. 아니면 어자피 통신 자체는 구별이 없으므로,

     

    일단 데이터를 받은 다음에 그 데이터에 대한 인식 방식을 잘 선택하면 되는 것이다.

     

     

    어쨌든 한 사이트 내에서 두 방식을 혼용해서 사용해야할 때에,

     

    그리고 MYSQL과 PHP가 연관이 있는 경우에..

     

     

    mysql_query('set names utf8');

     

     

    이 명령어가 거의 신의 한수이자 확실한 해결책이 될 것이라 생각한다.

     

     

     

     

    댓글