Jtti广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >如何解决php 连接oracle乱码问题
  • 941
分享到

如何解决php 连接oracle乱码问题

phporacle 2016-10-23 00:10:35 941人浏览 绘本
摘要

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑如何解决php 连接oracle乱码问题?PHP 连接Oracle及乱码问题笔记1. PHP连接Oracle步骤1. 提取oracle Instant Client核心D

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑

如何解决php 连接oracle乱码问题?

PHP 连接Oracle及乱码问题笔记

1. PHP连接Oracle

步骤1. 提取oracle Instant Client核心DLL

从OTN 的 Instant Client 页面下载用于 Windows 的 Instant Client Basic(11g) 程序包。此压缩文件的大小大约为 48MB。创建一个子目录(例如,c:\instantclient11_2),然后从压缩文件中复制以下库到apache\bin目录下:

oraociei11.dll 
orannzsbb11.dll 
oci.dll

这三个文件的总大小大约为 126MB。
要使用 php 老版本的“oracle”扩展(在 php.ini 中使用“extension=php_oracle.dll”启用),则复制 ociw32.dll 而非 oci.dll。

步骤2:编辑环境变量,将 c:\instantclient11_2 添加到 PATH 中(系统环境变量位于其他 Oracle 目录之前)。

例如,在 Win7 上,依次单击“计算机”->右键“属性”->“高级系统设置”->“高级”->“环境变量”,编辑系统变量列表中的 PATH。
如果使用了 tnsnames.ora 文件定义 Oracle Net 服务名称,则将 tnsnames.ora 复制到 c:\instantclient11_2,并将用户环境变量 TNS_ADMIN 设置为 c:\instantclient11_2。

步骤3:打开php的oci8扩展 编辑 php.ini,把 OCI8 扩展打开,即去掉注释符号‘;’:extension=php_oci8.dll

重新启动 Apache。重启服务器(服务器必须重启,不然环境变量不起效)

重启后通过phpinfo() 看到以下内容则表示配置成功:

oci8

OCI8 Supportenabled
Version1.4.7
Revision$Id: bf2eaf558b050b6d2e6d098bed6345af7e842ea4 $
Active Persistent Connections0
Active Connections0
Oracle Run-time Client Library Version11.2.0.3.0
Oracle Instant Client Version11.2
Temporary Lob supportenabled
Collections supportenabled
DirectiveLocal ValueMaster Value
oci8.connection_classno valueno value
oci8.default_prefetch100100
oci8.eventsOffOff
oci8.max_persistent-1-1
oci8.old_oci_close_semanticsOffOff
oci8.persistent_timeout-1-1
oci8.ping_interval6060
oci8.privileged_connectOffOff
oci8.statement_cache_size2020

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']);

方法二:连接时设置环境变量

 $conn=oci_new_connect($config['username'], $config['password'],$config['database'],'we8iso8859p1');

但是很快你会发现通过上述设置读取的中文数据在不设置编码的情况下可以正常显示,而一旦在页面(假如页面的字符集为UTF8)中使用则仍为乱码,

并且即便做转换 从 we8iso8859p1 -> utf-8 依旧为乱码。

其实仔细研究后发现oci8 以数据库编码WE8ISO8859P1获取数据后 自动转换为操作系统缺省的编码格式,假如我使用的操作系统缺省编码为GBK,则实际上通过OCI8读取后,字符的编码即为GBK, 因此在页面使用的时候编码转换应该为 从 GBK -> utf-8 :

 echo iconv('GBK','utf-8',$vo["USERNAME"]);

--结束END--

本文标题: 如何解决php 连接oracle乱码问题

本文链接: https://www.lsjlt.com/news/416.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何解决PHP部分乱码问题
    乱码是在Web开发过程中常见的问题之一,特别是在PHP编程中。如果您在PHP页面上看到了乱码,您可以采取一些方法来解决这个问题,这篇文章会详细介绍如何解决PHP部分乱码问题。什么是乱码?乱码是指在HTTP请求和响应中传递的数据中包含了无法被...
    802
    2023-05-30
    php 乱码
  • 如何解决 mysqlERROR 1064
    Mysql中反引号和单引号的区别反引号,一般在ESC键的下方。 它是为了区分MYSQL的保留字与普通字符而引入的符号。举个例子:SELECT select FROM test WHERE s...
    974
    2023-05-30
    mysql error 1
  • MySQL死锁如何解决
    MySQL死锁如何解决,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。环境准备数据库隔离级别:  mysql>&n...
    1016
    2023-05-30
    mysql
  • 如何解决sql挂起
    今天就跟大家聊聊有关如何解决sql挂起,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。大家平常在安装sql数据库的时候,你是不是总会遇到sql挂起的提...
    1124
    2023-05-30
    sql
  • 如何解决Rocketmq停机
    如何解决Rocketmq停机,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1时间追溯到2018年12月的某一天夜晚,那天我正准...
    1470
    2023-05-30
    rocketmq
  • wordpress错位如何解决
    这篇文章主要介绍“wordpress错位如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“wordpress错位如何解决”文章能帮助大家解决问题。 ...
    1423
    2023-05-30
    wordpress
  • wordpress乱码如何解决
    本篇内容主要讲解“wordpress乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“wordpress乱码如何解决”吧! ...
    868
    2023-05-30
    wordpress
  • dockerpull很慢如何解决
    目录docker pull很慢的问题docker pull时候太慢卡死镜像加速总结docker pull很慢的问题 经常拉取镜像的时候很慢或者拉不下来,这里可以使用阿里云镜像加速器,...
    413
    2023-05-30
    docker pull很慢 docker解决pull很慢 docker pull
  • golang乱码如何解决
    Golang 是近年来比较流行的开发语言之一,其语法简单,处理并发能力强,越来越多的公司和开发者选择使用它来进行开发和运维。然而,在使用 Golang 进行开发和处理数据时,也会遇到一些问题,比如出现乱码。本文将介绍 Golang 中可能出...
    495
    2023-05-30
  • php、apache、nginx如何解决跨域问题
    这篇文章给大家分享的是有关php、apache、nginx如何解决跨域问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。apache:a. 首先确保加载了mod_headers模...
    497
    2023-05-30
    php ajax nginx
  • PHP如何解决丢失SESSION的问题
    小编给大家分享一下PHP如何解决丢失SESSION的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.1  丢失S...
    176
    2023-05-30
    php session
  • 为什么PHP无法异步执行?如何解决?
    PHP是一种常用的编程语言,许多Web应用程序都是用PHP编写的。但是,PHP有一个明显的限制,就是它无法异步执行代码,这使得PHP在一些高并发场景下效率低下,难以满足对性能的要求。什么是异步执行?在传统的同步编程中,代码在执行时是按照顺序...
    424
    2023-05-30
    php 异步
  • 如何解决PHP header失效的问题?
    在进行网站开发时,我们常常需要使用到PHP中的header()函数,在这篇文章中,我将为您介绍在使用header()函数时可能会出现失效的情况,并提供几种解决方案。一、header()函数失效的原因发送header()函数前已经输出内容在使...
    423
    2023-05-30
  • 如何解决PHP数组的格式显示问题
    PHP是一种广泛应用于Web开发的编程语言,其高效、开发便捷的特点使其备受好评。在PHP的开发过程中,我们常常需要使用数组来管理和处理数据。然而,在实际开发过程中,我们可能会遇到一些问题,例如数组的值无法按照我们所期望的格式显示。本文将通过...
    685
    2023-05-30
  • 如何解决phpmyadmin乱码问题
    本篇文章主要探讨如何解决phpmyadmin乱码问题。有一定的参考价值,有需要的朋友可以参考一下,跟随小编一起来看解决方法吧。phpmyadmin数据库乱码?一、在phpMyAdmin中查看服务器编码登陆p...
    228
    2023-05-30
    phpmyadmin phpmyadmin乱码 mi
  • 如何解决redis击穿问题
    这篇文章将为大家详细讲解有关如何解决redis击穿问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。击穿:指的是单个key在缓存中查不到,去数据库查询,这样如果数据量不大...
    280
    2023-05-30
    redis 击穿 edi
  • 如何解决redis缓存雪崩
    这篇文章主要介绍如何解决redis缓存雪崩,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!redis缓存雪崩怎么解决?缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时...
    889
    2023-05-30
    redis edi %d
  • MySQL同步延迟如何解决
    本篇文章为大家展示了MySQL同步延迟如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1:应用解决方案在开发中,假设延迟是存在的,对于核心业务必须要严谨,比如...
    368
    2023-05-30
    mysql
  • SqlDateTime溢出该如何解决
    小编给大家分享一下SqlDateTime溢出该如何解决,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!错误出现:导入数据时出现“S...
    286
    2023-05-30
    sqldatetime
  • 如何解决mysqldump时域问题
    如何解决mysqldump时域问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。今天我们就再来讨论一下mysqldump的时域...
    227
    2023-05-30
    mysqldump
热门问答
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作