문자 인코딩에 대해 알고싶어요
글쓴이: 망치 / 작성시간: 토, 2006/11/18 - 2:34오후
PHP, MySQL 을 사용하면서 문자셋 설정에 대해 이해 안되는 부분이 많은데.. 제대로 이해 하려면 어떻게 해야 하나요?..
그 수많은 문자셋.. UTF8.. euckr.. 브라우저 설정.. DB 서버 설정..
문자셋이 euckr_korean_ci 인 테이블의 한글들이 UTF-8 환경인 PHPMyAdmin 에서도 잘 보이는것이나..
또 다른데선 문자셋이 utf8_unicode_ci 테이블의 한글들이 마찬가지로 UTF-8 환경인 PHPMyAdmin 에서 깨져서 나오고.. 도무지 모르겠습니다 -.-;..
무지를 깨우쳐주세요.. ㅠㅠ
Forums:
잘은 모르겠으나...
어느 날.. 관리 차원에서 회원들에게 날릴 매일일 작성 하고.. 그것을 Gmail에서 보냈습니다. 물론!!! 윈도우즈 메모장이었습니다.(이유는 묻지 마십시요. 전 VI나 메모장, 워드페드와 nano/pico같은 에디터를 즐깁니다.) 제가 알기로 메모장은 CP949로 파일을 인코딩 하거나 혹은 ANSI식으로 바로 저장 해 버린다고 알고 있습니다. 이걸 Gmail에 넣었는데 일부 웹매일에서 받는 이들만 정상적으로 받고 인코딩을 제대로 못 다루는 몇몇 매일 서버에선 전부 깨진 한글을 보게 되었습니다. 분명히 브라우저에선 잘 보였는데 말입니다.
브라우저는 왼만해선 인코딩을 자동 감지 하면서도 대때론 못 감지 하는 거 같기도 하고... 그래서 수종으로 인코딩 마춰주면 사이트가 잘 보일 때도 있습니다. 파이어폭스나 IE모두 그런 것 같습니다. 솔직히 저도 이해가 안 되지만, 이건 서버측 프로그램들 문제보단 브라우저쪽 문제가 더 크다 생각 되서 적어 본 것이고, 혹시나 힌트가 되시길 바라는 마음에서 적은 것입니다. 근대 이건 프로그래밍이나 설치/활용 QnA쪽에 올라 가는게 맞지 않을까 하는 생각이 드네요.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
1. 에디터가 무엇이건
1. 에디터가 무엇이건 간에 gmail 에 '붙여넣기'를 하게되면 에디터의 인코딩 설정과 무관해집니다.
붙여들어간 gmail 은 웹브라우저 잖아요.;)
2. gmail 은 초기에 UTF-8 로만 메일을 날렸으며, 대부분의 웹메일은 이를 '외국어메일'로 간주하였습니다.
현재 gmail 은 각 나라의 인코딩으로 보내는것이 기본 설정입니다.
3. 브라우저가 삽질(;)을 하는 이유중 가장 큰 것이 meta 나 header 에 인코딩표기가 없거나 잘못된 경우입니다.
없으면 대충 맞춰주는 인코딩->자동설정 기능에 의해 맞출 확률이 좀 있는데, 잘못 표기되면 매우 곤란합니다.
emerge money

https://xenosi.de/
MySQL : 저장된
MySQL : 저장된 인코딩과 클라이언트의 인코딩에 의해 알아서 변환되어 출력합니다.
PhpMyAdmin 에서 잘못나온다면
1. 아파치나 php 의 인코딩 설정이 잘못되어 '화면'에 잘못 나오는 경우,
2. MySQL 에 저장할 때 잘못된 인코딩으로 저장한 경우 (예:iso8859 로 설정하고 euckr 로 넣는 등 - 코드의 범위가 거의 같기 때문에 오류가 나지 않습니다. 불러올 때도 iso8859 라면 눈치못채죠.)
3. 클라이언트의 인코딩 설정이 잘못되어 (디폴트설정이 아닌경우 SET NAMES 선언을 해야죠.) 원치않는 인코딩으로 변환된 경우
정도가 있겠네요.
MySQL 5 의 경우 인코딩을 정하는 부분이 매우 다양합니다.
Server 에 지정하고,
DB 에 지정하고,
Table 에 지정하고,
Field 에 지정하네요.
지정하지 않으면 상위의 인코딩을 계승하겠죠.
디폴트는 my.cnf 에서 지정할 수 있군요.
emerge money

https://xenosi.de/
흠흠..
1. 물론, 웹브라우저에 집어 넣으면 알아서 코드 변환이 됩니다. 하지만 이것이 웹브라우저에 직접 입력 할 때와 다른 곳에서 복사 수 붙여 넣을 때는 다르게 처리 되는 것 같습니다.(Gmail의 경우...) 이건 Gmail자체 문제는 아닌 듯 하고 뭔가 안 맞는다는 추측입니다.
2. 여러가지로 불편하면 my.cnf, php.ini, httpd.conf에서 모두 그냥 euc-kr로 설정 하면 깔끔(?) 합니다. 그냥 속 편하죠. 전부 Default 문자셋을 설정 할 수 있으니까요. 역시 말솜씨가 없어서 위에 써 주신 송효진님 만큼 잘 설명을 할 수는 없는 것 같습니다. 실전과 말이 다르게 나가는...
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사