PHP에서 Oracle에 연결할 때 인코딩을 설정하는 방법: 먼저 Oracle의 문자 집합을 가져온 다음 PHP 코드를 "oci_connect("scott", "tiger", $db, 'zhs16gbk');"로 설정합니다.
이 기사의 운영 환경: windows7 시스템, PHP7.1 버전, DELL G3 컴퓨터
PHP로 Oracle에 연결할 때 인코딩을 설정하는 방법은 무엇입니까?
PHP는 문자 깨짐을 방지하기 위해 문자 세트를 설정하기 위해 oracle에 연결합니다.
데이터베이스는 oracle을 사용합니다. PHP가 oracle에 연결할 때 문자 세트를 지정하는 것이 가장 좋습니다.
PHP 매뉴얼을 확인하세요. oci_connect의 네 번째 매개변수는 charset입니다. 이것이 핵심입니다.
먼저 oracle의 문자 집합을 가져오고 "select * from V$NLS_PARAMETERS;"를 실행합니다. NLS_CHARACTERSET 변수는 필요한 문자 집합에 해당합니다. 예를 들어 여기서는 "ZHS16GBK"입니다. 따라서 최종 PHP 코드는 다음과 같습니다.
Php code
$c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk'); $c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');
내 로컬 PHP 파일은 utf-8을 사용하므로 얻은 코드는 다음과 같이 변환해야 합니다.
Php code
while ($dat = oci_fetch_row($cur)) { print_r(iconv('gb2312', 'utf-8', $dat[0])); } while ($dat = oci_fetch_row($cur)) { print_r(iconv('gb2312', 'utf-8', $dat[0])); }
- --- ------------------
업데이트
--------------- -----
한 동료는 Oracle이 클라이언트가 지정한 문자 집합에 따라 데이터를 제공할 수 있다고 말했습니다. 즉, 내 로컬 PHP 파일이 UTF-8을 사용하는 경우 oci_connect를 사용할 때 UTF-8을 직접 지정할 수 있으며 인코딩 변환도 저장됩니다.
Php 코드
$c1 = oci_connect("scott", "tiger", $db, 'UTF8'); $c1 = oci_connect("scott", "tiger", $db, 'UTF8');
게다가 이상한 문제가 있습니다. 이전에 인코딩으로 변환된 iconv가 테스트 머신 환경에서는 정상인데 나중에 원격 위치로 전송하면 제대로 구문 분석할 수 없습니다. mb_convert_encoding으로 대체됩니다.
Php 코드
$nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk'); $nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');
가능한 이유는 iconv의 두 번째 매개변수에 "//IGNORE"가 추가되었는지 여부입니다. http://cn2.php.net을 참조하세요. /manual/ko/function.iconv.php. 관심이 있으시면 시도해 볼 수 있지만 시도하지는 않겠습니다
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP를 Oracle에 연결할 때 인코딩을 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!