[PHP] 파일 인코딩 문제...
글쓴이: ohdol / 작성시간: 화, 2006/01/10 - 11:22오전
웹브라우저를 통해 페이지에 접근하면 UTF-8 형식으로 서버에 로그를 남겨 주기적으로 디비에 넣으려고 합니다.
문제는 php에서 파일로 쓸때 UTF-8 인코딩이 되고 있지 않습니다.
php.ini의 default_charset은 utf-8로 설정해 두었구요.
iconv('euc-kr','utf-8', $str)으로 변환해서 파일에 쓰면 제대로 써지기는 하는데 ...
$fp = fopen($fileName, "a"); fwrite($fp, $str); $fclose($fp)
상단에 메타 태그 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
또는 header 함수로 charset 값 utf-8로 지정해도 안되네요.
그냥 웹브라우저로 utf-8로 코딩한 페이지를 볼때는 아무 문제 없는데 페이지 내에서 php로 파일 작성시에 문제가 생기네요.
매번 함수 사용안하고 설정파일 변경으로 가능한 방법 있는지 알고 싶습니다. 또 왜 기본이 euc-kr로 잡히는지 궁금하네요 :?:
Forums:
잘 이해가 안갑니다.
일단 php에서 파일로 쓰려는 데이터가 뭘로되어있는지 궁금한데요.
원래 euc-kr로 된 데이터라면 당연히 euc-kr로 써질겁니다.;
그건 변환해야 하는게 당연하죠.
또한 웹페이이에서 UTF-8로 코딩한 페이지를 볼때 UTF-8로 정상적으로 보인다면 문제는 없는데요...
혹시 php파일을 UTF-8로 저장하고 계십니까?
메모장이나 에디터에서 저장할때 그냥 Save하면 안되고, Save as해서 인코딩을 UTF-8로 설정하셔야 합니다.
파라미터값을 저장합니다.
Post 또는 Get 방식으로 넘어온 Query string 값의 일부를 파일로 쓰고 있습니다.
이 query string 값 중 파일로 남겨지는 부분이 한글일때 문제가 발생합니다.
이것도 default charset 에 따라 넘어오는줄 알았는데 아닌가 보네요.
euc-kr 한글로 넘어오는지 utf-8 한글로 넘어오는지 구분하는 방법이 있나요?? 열려진 페이지 인코딩은 utf-8로 되어 지는게 확실한데...query string은 어떻게 처리해야할지 감이 안 잡히네요
^^ always smile
GET 방식이라면...
간단합니다.
IE의 옵션중 항상 UTF-8로 보냄을 켜시면 됩니다.
Re: 파라미터값을 저장합니다.
열려진 페이지 인코딩이 utf-8이고, 여기에 form이 있으면 그것으로 넘어가는 값은 무조건 utf-8입니다.
단, 주소창에서 보내지는 값은 IE옵션에 따라 다를 수 있습니다.
또 위에서 지적된 것중에 하나인데, php 자체가 euc-kr로 인코딩된 한글 스트링이 있어서, IE에서 이 페이지를 utf-8로 인식하지 못하고 euc-kr로 자동 인식(?)하는 불상사가 발생할 소지도 있습니다.
마지막으로, 아파치의 default charset이 comment out되었는지 확인하세요.
Re: GET 방식이라면...
개발자가 사용하기엔 간단하지만 해당 웹페이지를 사용하는 모든 고객들에게 인식시키기에는 그리 간단해 보이지 않습니다.
구분하는 방법은 모르겠습니다만, print로 찍어서 웹페이지로 확인하면 간단하게 알 수 있지 않을까요? 보기->인코딩 의 상태를 확인하면 출력되어있는 형식을 금방 확인해 볼 수 있겠습니다.
Re: 파라미터값을 저장합니다.
php페이지 자체는 확실히 utf-8로 인코딩 되어 있습니다. 내부적으로 호출해서 사용하는 페이지라 보여지는 코딩은 거의 없거든요~^^
아파치 설정엔 default charset을 따로 지정하지 않았습니다.
많이 접했었던 "항상 UTF-8로 보냄"을 왜 기억하지 못했었는지...이휴~
IE를 사용하지 않고 어플을 짜서 소켓으로 저 URL을 get 또는 post 방식으로 호출한다면 query string을 자기가 원하는 방식대로 인코딩 할수 있나요??
^^ always smile
댓글 달기