Lösung für den verstümmelten Code in der PHP-Verbindung zu Oracle: 1. Umgebungsvariablen festlegen; 2. Oracle-Zeichensatz abrufen; ;" Verwenden Sie einfach die Methode, um die Kodierung zu konvertieren.
Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
Wie löse ich das Problem der verstümmelten Oracle-Verbindung mit PHP?
PHP-Verbindung zu Oracle und verstümmelte Problemnotizen
1. PHP-Verbindung zu Oracle
Schritt 1. Extrahieren Sie die Oracle Instant Client-Kern-DLL
Laden Sie Instant Client Basic für Windows (11g) von der Instant Client-Seite von OTN herunter ) Paket. Die Größe dieser komprimierten Datei beträgt ca. 48 MB. Erstellen Sie ein Unterverzeichnis (z. B. c:instantclient11_2) und kopieren Sie die folgenden Bibliotheken aus der ZIP-Datei in das Apachebin-Verzeichnis:
oraociei11.dll orannzsbb11.dll oci.dll
Die Gesamtgröße dieser drei Dateien beträgt ungefähr 126 MB.
Um die Erweiterung „oracle“ für ältere Versionen von PHP zu verwenden (aktiviert mit „extension=php_oracle.dll“ in php.ini), kopieren Sie ociw32.dll anstelle von oci.dll.
Schritt 2: Bearbeiten Sie die Umgebungsvariablen und fügen Sie c:instantclient11_2 zu PATH hinzu (die Systemumgebungsvariablen liegen vor anderen Oracle-Verzeichnissen).
Klicken Sie beispielsweise unter Win7 auf „Computer“ -> Rechtsklick auf „Eigenschaften“ -> „Erweiterte Systemeinstellungen“ -> „Erweitert“ -> „Umgebungsvariablen“ und bearbeiten Sie PATH in der Systemvariablenliste .
Wenn die Datei tnsnames.ora zum Definieren von Oracle Net-Dienstnamen verwendet wird, kopieren Sie tnsnames.ora nach c:instantclient11_2 und setzen Sie die Benutzerumgebungsvariable TNS_ADMIN auf c:instantclient11_2.
Schritt 3: Öffnen Sie die oci8-Erweiterung von PHP. Bearbeiten Sie php.ini und öffnen Sie die OCI8-Erweiterung, das heißt, entfernen Sie das Kommentarsymbol „;“: extension=php_oci8.dll
Starten Sie Apache neu. Starten Sie den Server neu (der Server muss neu gestartet werden, sonst werden die Umgebungsvariablen nicht wirksam)
Wenn Sie nach dem Neustart den folgenden Inhalt über phpinfo() sehen, ist die Konfiguration erfolgreich:
OCI8-Unterstützung | aktiviert |
Version | 1.4.7 |
Revision | $Id: bf2eaf558b050b6d2e6d098bed6345af7e842ea4 $ |
Aktive dauerhafte Verbindungen | 0 |
Aktive Verbindungen | 0 |
Oracle Run -time Client-Bibliotheksversion | 11.2.0.3.0 |
Oracle Instant Client-Version | 11.2 |
Temporäre Lob-Unterstützung | aktiviert |
Sammlungsunterstützung | aktiviert |
Direktive | Lokaler Wert | Hauptwert |
---|---|---|
oci8.connection_class | kein Wert | kein Wert |
oci8.default_prefetch | 100 | 100 |
oci8.events | Aus: Aus _timeout | -1 |
oci8.ping_interval | 60 | |
oci8.privileged_connect | Off | |
oci8.statement_cache_size | 20 | |
2. PHP Oracle 中文乱码问题 通常缺省配置连接Oracle在处理中文时都会遇到乱码问题,其实绝大部分人都知道在客户端连接Oracle服务端前首先要在客户端正确的设置服务端的字符集信息,通过PLSQL运行“select * from V$NLS_PARAMETERS;” 即可获取oracle的字符集,变量NLS_CHARACTERSET对应的就是我们需要的字符集,比如我这里就是“WE8ISO8859P1” 设置字符集的方法如下: 方法一: 连接前设置环境变量 putenv("NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1"); $conn=oci_new_connect($config['username'], $config['password'],$config['database']); Nach dem Login kopieren 方法二:连接时设置环境变量 $conn=oci_new_connect($config['username'], $config['password'],$config['database'],'we8iso8859p1'); Nach dem Login kopieren 但是很快你会发现通过上述设置读取的中文数据在不设置编码的情况下可以正常显示,而一旦在页面(假如页面的字符集为UTF8)中使用则仍为乱码, 并且即便做转换 从 we8iso8859p1 -> utf-8 依旧为乱码。 其实仔细研究后发现oci8 以数据库编码WE8ISO8859P1获取数据后 自动转换为操作系统缺省的编码格式,假如我使用的操作系统缺省编码为GBK,则实际上通过OCI8读取后,字符的编码即为GBK, 因此在页面使用的时候编码转换应该为 从 GBK -> utf-8 : echo iconv('GBK','utf-8',$vo["USERNAME"]); Nach dem Login kopieren 推荐学习:《PHP视频教程》 Das obige ist der detaillierte Inhalt vonSo lösen Sie das verstümmelte Problem der PHP-Verbindung zu Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Vorheriger Artikel:Was ist der Unterschied zwischen PHP-Socket und Curl?
Nächster Artikel:So implementieren Sie die Funktion zum Hinzufügen von Freunden in PHP
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Aktuelle Ausgaben
Bei der Verwendung von opentbs zum Generieren von ODT-Dateien sind Probleme aufgetreten: Werte desselben Schlüssels werden in derselben Zeile statt in separaten Spalten angezeigt.
Ich verwende eine Bibliothek namens OpenTbs, um ODT mit PHP zu erstellen. Ich verwende sie...
Aus 2024-04-06 20:18:18
0
1
483
verwandte Themen
Mehr>
|