php怎么设置oracle编码

本文操作环境: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代码为:

$c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');

我本地的PHP文件统一用utf-8,所以,获取的代码还要经过如下编码转换:

while ($dat = oci_fetch_row($cur)) {
  print_r(iconv('gb2312', 'utf-8', $dat[0]));
}

更新:

同事说,Oracle可以按照 客户端指定的字符集 提供数据。也就是说,如果我本地PHP文件用UTF-8,那么,我在oci_connect的时候,直接指定utf-8就行了,连编码转换都省了。

$c1 = oci_connect("scott", "tiger", $db, 'UTF8');

另外,有个奇怪的问题:前面编码转换的iconv在测试机环境正常,但是传到远程就不能正常解析了,后来换成了mb_convert_encoding就可以了,代码如下:

$nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');

可能原因在于iconv里面的第二个参数是否加了“//IGNORE”,请参考Http://cn2.php.net/manual/en/function.iconv.php。有兴趣的,可以试试,我就不试了

另外附上自己封装好的一个php查询oracle数据的方法Dingsql


function DingSql($sql = ''){
    header("Content-type: text/html; charset=utf-8");
    if(!$sql) return false;
    $conn= oci_connect('name', 'passwd', 'IP:PORT/serverName','zhs16gbk');
    if($conn) {
        $stid = oci_parse($conn, $sql); // 配置SQL语句,准备执行
        if (!$stid) {
            $e = oci_error($conn);
            print htmlentities($e['message']);
            exit;
        }
        $r = oci_execute($stid, OCI_DEFAULT); // 执行SQL。OCI_DEFAULT表示不要自动commit
        if(!$r) {
            $e = oci_error($stid);
            echo htmlentities($e['message']);
            exit;
        }
    
        $kkk = [];
        $i = '-1';
        while($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {//返回关联数据并创建null
            $i++;
            foreach($row as $key => $item) {
                $kkk[$i][$key] = iconv("gb2312", "utf-8//TRANSLIT", $item);
            }
        }
        oci_close($conn);
        return $kkk;    //二维关联数组
    }else{
        echo '连接oracle失败!';exit;
    }
}

--结束END--

本文标题: php怎么设置oracle编码

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

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

猜你喜欢

  • php怎么设置oracle编码

    php设置oracle编码的方法:1、获取oracle的字符集;2、运行“select * from V$NLS_PARAMETERS;”;3、通过iconv函数进行编码转换即可。
    阅读数:773 php oracle
  • php怎么实现不重复编码

    php实现不重复编码的方法:1、创建一个PHP示例文件;2、使用PHP进行进制转换;3、通过数据库得到10进制的编号,并保证编号唯一即可。
    阅读数:226 php
  • php怎么查询变量的编码

    在PHP中可以通过mb_detect_encoding函数查询变量的编码,该函数的作用就是检测字符的编码,其使用语法是“mb_detect_encoding(string $str, mixed $encoding_list...)”。
    阅读数:684 php 编码
  • php怎么实现ucs2编码

    php实现ucs2编码的方法:1、创建一个PHP示例文件;2、通过“function Ucs2Code($str,$encode="UTF-8"){...}”方法实现ucs2编码即可。
    阅读数:631 php ucs2编码
  • php 怎么设置空格

    php设置空格的方法:1、创建一个PHP示例文件;2、通过“function white_space( $string, $whitespace ){...}”方法设置空格即可。
    阅读数:113 php 空格
  • php怎么设置星期

    php设置星期的方法:1、通过“date("w");”方法获取数字星期;2、通过“$weekarray[date("w")];”方法获取中文星期;3、通过“date("w",strtotime("..."))”方法获取指定日期。
    阅读数:601 php
  • php怎么修改数据库编码

    php修改数据库编码的方法:1、在mysql数据库,创建一张user表;2、创建PHP文件并连接mysql数据库;3、使用mysqli_query函数执行“set names 'utf8'”sql语句,并设置连接数据库的编码为utf8即可。
    阅读数:713 php 数据库编码
  • php 怎么设置本地时间

    php设置本地时间的方法:1、在页头使用“date_default_timezone_set()”设置默认时区为北京时间;2、在php.ini中设置“date.timezone”的值为PRC即可。
    阅读数:270 php
  • php 怎么设置input只读

    php设置input只读的方法:1、打开相应的代码文件;2、通过“<input type="text" readonly>”方式设置input只读即可。
    阅读数:803 php input 只读属性
  • php curl怎么设置cookie

    php curl设置cookie的方法:1、创建PHP示例文件;2、通过curl_setopt函数设置cURL传输选项;3、在CURL中传递cookie即可。
    阅读数:655 php curl cookie
  • php怎么设置警告等级

    php设置警告等级的方法:1、在php.ini里修改error_reporting选项;2、在php页面里用error_reporting()函数来修改报错级别。
    阅读数:937 php
  • php怎么设置变量类型

    php中,可利用settype()函数来设置变量类型,语法“settype($var,"数据类型")”;数据类型值可为“boolean”、“integer”、“float”、“string”、“array”、“object”、“null”。
    阅读数:854 php 变量类型
  • php中怎么设置时区

    今天就跟大家聊聊有关php中怎么设置时区,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。PHP中设置时区方法小结代码如下:? date_default_timezone_set(PR
    阅读数:729 php
  • php 怎么将其他编码 转utf8

    php将其他编码转成utf8的方法:1、创建一个PHP示例文件;2、找出字符串本身的编码;3、通过mb_convert_encoding转换为utf-8编码即可。
    阅读数:504 编码 php
  • php 脚本怎么设置不超时

    php脚本设置不超时的方法:1、在php.ini里面设置“max_execution_time = 120;”;2、通过PHP的ini_set函数设置“ini_set("max_execution_time", "120");”等等。
    阅读数:537 php
  • php怎么设置并发连接数

    php设置并发连接数的方法:1、找到php-fpm.conf配置;2、编辑选项【pm= static】、【request_terminate_timeout】、【pm.max_requests】。
    阅读数:616 php 并发 连接数
  • php怎么查看文件的权限设置

    在php中,可以利用fileperms()函数来查看文件的权限设置,该函数的作用就是获取并返回文件或目录的权限,语法“fileperms(filename)”;如果获取成功,则会以数字形式返回文件的权限设置。
    阅读数:594 php 文件 权限
  • php pdo怎么设置utf8

    php pdo设置utf8的方法:1、打开相应的PHP代码文件;2、通过“$this->pdo->prepare("set names utf8");”设置utf8编码即可。
    阅读数:259 php pdo tf8
  • php中怎么设置字符集

    在php中,可以使用header()函数来设置字符集,只需要在php文件头部添加“header('Content-type:text/html;charset=字符编码');”代码即可。
    阅读数:668 php 字符集
  • php5.4怎么设置时区

    php5.4设置时区的方法:1、找到并打开php.ini文件;2、查找“date.timezone”内容;3、去掉前面的分号修改成为“date.timezone = PRC”即可。
    阅读数:838 php5.4