2013-08-01 10 views
0

내 Vertica에 연결하는 데 문제가 있습니다.
PHP와 PDO ODBC 드라이버 (unixODBC 사용)를 사용합니다.
isql을 통해 Vertica에 연결하고 테이블에서 레코드를 선택하면 모든 데이터가 잘 인코딩됩니다. UTF-8 (키릴 문자와 같은 비 ASCII 기호) 필드가 올바르게 인쇄됩니다.
웹에서 PHP 스크립트로 연결하고이 필드에 다음과 같은 유니 코드 문자가있는 동일한 쿼리를 실행하는 경우 \ u001A \ u001A \ u001A \ u001A
각 \ u001A는 ASCII가 아닌 기호 하나를 나타내며 인쇄 할 수 없습니다.Apache/PHP의 쿼리에서 인코딩이 올바르지 않습니다.

이 문제는 웹에서 스크립트를 실행할 때만 발생하는 것으로 나타났습니다 (웹 서버는 Apache2 임).
그래서 콘솔에서 스크립트를 실행하면 정상입니다.
그러나 localhost/test.php에서 수행하면 문제가 발생합니다.
Linux 및 Windows 용 Vertica 클라이언트 드라이버의 x32 및 x64 버전에서 발생합니다.
Apache가 Vertica에서 얻은 결과 결과에 어떤 영향을 미칠 수 있습니까?

+0

작업을 시작합니다. Vertica가 참여하는 것이 좋습니다. 드라이버의 버그처럼 들리는데, 결국에는 디버깅이 필요합니다. 이 사이트에 대한 아름다운 대답은 아니지만, 그게 내가 서둘러야 할 일이다. – geoffrobinson

답변

0

요구이 내 급여 등급보다 확실히

setlocale(LC_ALL, 'en_US.UTF-8'); 
0

vertica.ini 파일에 DriverManagerEncoding=UTF-16이 있는지 확인하십시오. 물론 어쩌면 다른 값 (UTF-8 또는 UTF-32 일 수도 있지만)을 사용해보아야하지만, 제게는 UTF-16으로 만 작동했습니다. 그것은 당신의 클라이언트가 사용하고있는 인코딩과 완전히 독립적 인 것으로 보인다. unixODBC는 내부적으로 일종의 변환을한다고 생각합니다. Vertica 드라이버는 드라이버 관리자가 기대하는 인코딩을 생성해야합니다. PHP 코드와 모든 것을 직접 설정 추가 로케일

+0

DriverManagerEncoding에 대한 모든 인코딩을 시도합니다. 리셋은 필요 없습니다. 웹에서 시스템의 비 ASCII 기호로 Vertica의 데이터를 선택할 수 있습니까? (Apache/PHP) – Mike