2017-04-05 13 views
2

Oracle SQL을 연결하고 utf8, 을 이미 설정했지만 뭔가를 선택하거나 삽입 할 때 여전히 텍스트가 깨져 있습니다.PDO에서 UTF8을 설정하는 방법 OCI // PHP

define("DB_HOST", "(DESCRIPTION =(ADDRESS = (PROTOCOL=TCP) 
          (HOST= IP) 
          (PORT=1521)) 
          (CONNECT_DATA=(SID=IETDB))); 
          charset = utf8 
    "); 

어떻게이 문제를 해결하려면 다음

내 코드?

답변

1

지원되지 않으므로 연결 문자열을 수정하여이를 수행 할 수 없습니다.

oci_connect 매뉴얼 페이지에 기록으로

가, 네 번째 매개 변수는 문자 집합 지정

oci_connect($username, $password, $connection_string, 'UTF-8'); 

이 OCI는 UTF8 형식으로 문자열을 제공하고 UTF8에 가능한 결과를 제공하기 위해 기대하는 이야기를, 데이터베이스 문자 세트로 변환 . 매뉴얼에서 :

Oracle 클라이언트 라이브러리에서 사용하는 문자 세트를 결정합니다. 문자 집합은 데이터베이스에서 사용하는 문자 집합과 일치 할 필요가 없습니다. 일치하지 않으면 오라클은 데이터베이스 문자 집합과 데이터를 변환하는 데 최선을 다할 것입니다. 문자 집합에 따라 사용 가능한 결과가 제공되지 않을 수 있습니다. 변환은 또한 약간의 시간 오버 헤드를 추가합니다.

지정하지 않으면 Oracle 클라이언트 라이브러리가 NLS_LANG 환경 변수에서 문자 집합을 결정합니다.

이 매개 변수를 전달하면 연결하는 데 걸리는 시간을 줄일 수 있습니다.

당신이 PDO_OCI에게 캐릭터 세트를 사용하는 경우 다시 as documented의 DSN에 추가 할 수 있습니다 답변

new \PDO('oci:dbname=' . $conn_string . ';charset=UTF8', $username, $password); 
+0

감사합니다, 나는 "수출 NLS_LANG ="전통 CHINESE_TAIWAN.UTF8 ""에서 'envvars를 삽입 'XAMPP에서 문제를 해결하는 파일! –