나는 sybase를 사용하여 MSSQL에 연결하는 PHP 5.1.6을 실행하는 오래된 Ubuntu 6.10 서버를 상속 받았습니다. 사용자가 엔 대시가 포함된 일부 텍스트를 제출하여 내 스크립트 중 하나가 중단되었습니다. Sybase는 대시나 é와 같은 UTF-8 문자를 좋아하지 않는 것으로 나타났습니다. 향후 데이터베이스 검색에서도 이러한 문자가 마음에 들지 않을 것입니다. 이 문제를 해결하기 위해 대시와 같은 문자를 하이픈으로, é를 e로 변환하고 싶습니다. 음역에 대해 조사했습니다.
내가 생각해낸 해결책은 PHP의 iconv 함수를 사용하여 UTF-8을 ASCII로 음역하는 것이었습니다. 내 개발 컴퓨터(Ubuntu 12.04)에서는 잘 작동하지만 이전 프로덕션 서버(Ubuntu 6.10)에서는 잘 작동하지 않습니다. 디버깅을 한 후에 문제를 iconv 버전으로 추적한 것 같습니다.
echo café > test.txt
iconv --from-code=UTF8 --to-code=ASCII//TRANSLIT test.txt
result on 6.10: caf?
result on 12.04: cafe
iconv --version
result on 6.10: iconv (GNU libc) 2.4
result on 12.04: iconv (Ubuntu EGLIBC 2.15-0ubuntu10) 2.15
locale
두 시스템 모두에서 "en_US.UTF-8"을 반환합니다.
내 프로덕션 시스템에서 iconv 라이브러리를 업그레이드해야 한다고 생각하는데 어떻게 해야 할지 잘 모르겠습니다.