서버 문자셋은 ko_KR.eucKR 입니다.
postgresql 8.4 를 사용하고 있고
db server encoding 은 utf-8 입니다.
php 5.3 과 apache 2.2 를 사용중인데
여러 사이트가 셋팅되어 있으며 모두 euc-kr 로 제작되었습니다.
이번에 utf-8 사이트를 제작하는데
html 의 모든 문서는 utf-8 로 되어 있고 잘 동작합니다.
그리고 database 에서 set client_encoding to utf8 로 해서 접속후 날려줍니다.
디비에 저장된 내용은 아무 탈 없이 잘 보여집니다.
헌데 입력시 문자셋 오류를 내고 입력이 되지 않습니다.
euc-kr 로 문서 저장후
디비연결시도 uhc 로 해서 입력하면 당연 잘 됩니다. (여태껏 이렇게 해놨습니다.)
아마도 서버 의 nobody 계정의 LANG 변수에 영향을 받는 것 같은데..
왜 읽기는 잘 되는데 쓰기만 하면 안 되는지 도무지 이해가 안 됩니다.
에러메세지는 다음과 같으며, 한글 전혀 없이 영문만을 사용해도 마찬가지 입니다.
Query failed: ERROR: invalid byte sequence for encoding "UTF8": 0xb0 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". ...................
charset 에 대해서
php 와 apache 에서는 특별히 지정한 것은 없습니다.
아파치 에서 AddDefaultCharset 는 지정하지 않았고
php 의 경우에는 ini_set 로 default_charset 을 지정하거나
header () 로 content type 의 charset 을 강제로 utf-8 로 해도 마찬가지입니다.
입력 처리 프로세스에서
insert 학 ㅣ전에
출력을 해보면 한글은 제대로 보이고 utf-8 이 맞습니다.
방법이 없을까요? |