2011-09-08 6 views
1

저는 ingres에서 CakePhp를 사용해야합니다.Ingres : PHP에서 지정된 인코딩으로 데이터베이스를 읽는 방법?

문제는 웹 사이트에서 UTF-8을 사용해야한다는 것이고 데이터베이스는 ISO-8859-1에서 제공된다는 것입니다.

내 질문은 어떻게이 charset 문제를 관리하는 것입니다?

MySql에서 "SET NAMES UTF-8"요청을 데이터베이스에서 실행할 수 있지만 ingres로이 작업을 수행하는 방법을 찾을 수 없습니다.

대단히 감사합니다!

답변

1

인코딩/문자 집합은 환경 변수 II_CHARSETxx을 사용하여 시스템 수준에서 정의됩니다. 가치를 얻으려면 ingprenv의 출력을보십시오. 변경할 수는 있지만 데이터 손상이 발생할 가능성이 큽니다. UTF-8로 작업하는 가장 좋은 방법은 VARCHAR 대신 N (VAR) CHAR을 사용하는 것이며, PHP 드라이버는 들어오는 모든 데이터가 UTF-8로되어 있고 UTF-16으로 변환되었다고 가정합니다. 이 변환은 ini 설정 ingres.utf8에 의해 제어됩니다 (http://php.net/manual/en/ingres.configuration.php#ini.ingres.utf8 참조)

+0

문제는 내가 ingres 데이터베이스에서 아무 것도 변경할 수 없다는 것입니다. 이것은 ERP 데이터베이스에서 비롯된 것이며 관리하는 또 다른 엔터프라이즈입니다. 데이터베이스에서 UTF8 인코딩으로 클라이언트 값을 설정할 수있는 이유가 여기 있습니다. – J4N

+0

유감스럽게도 cakephp 인터페이스를 수정하여 UTF-8 데이터를 ISO-8859-1로 강제 변환하고 다시 사용하지 않는 한 운이 없게됩니다. 이론적으로 드라이버는 이것을 할 수 있지만 ICU 나 iconv와 같은 외부 라이브러리에 의존하게 만듭니다. – grantc

+1

Ingres가 싫어지기 시작했습니다 ... Oracle과 같은 레벨에 있다고 발표 한 DBMS의 경우, MySQL보다 더 낮습니다. – J4N

관련 문제