Above cgi script returns which charset is on the script running. I hope it'll return UTF-8 but I got ASCII.
#!/usr/local/bin/sbcl --script
(format t "Content-type:text/html; charset=UTF-8~%")
(format t "~%")
(format t "~A~%" (stream-external-format *standard-output*))
Well.. may be some problem is there with Apache CGI.
분명히 위의 스크립트를 실행시키면 UTF-8이 나와줄거라고 믿었지만 결론은 ASCII가 나왔다.
Apache CGI에서 기본 실행시 ASCII로 돌리는 것 같은데.. 환경변수를 UTF-8로 변환할 방법을 모르겠다.
아니면 unicode를 출력할 적절한 방법을 찾아야할텐데 좀 갑갑하다..
이 문제는 apache의 mod_env를 사용해서 풀게되었다.
mod_env는 환경변수를 지정해서 이를 CGI등으로 보낼 수 있도록 하는 모듈이다.
LC_CTYPE을 UTF-8로 지정하는 방법을 사용해서 SBCL이 유니코드로 동작하게 만들었다.
방법은
- /etc/apache2/mods-enabled 에 /etc/apache2/mods-available/env.load 의 심볼릭링크를 만들고
- /etc/apache2/mods-available/env.conf를 다음과 같이 만든다.
SetEnv LC_CTYPE en_US.UTF-8<br />SetEnv LANG en_US.UTF-8<br /><br /><br />
- /etc/apache2/mods-enabled 에 /etc/apache2/mods-available/env.conf 의 심볼링링크를 만든다.
- apache2를 재시작한다.

댓글 없음:
댓글 쓰기