GVKun编程网logo

php – base_convert和负数(php传值赋值)

9

在本文中,我们将给您介绍关于php–base_convert和负数的详细内容,并且为您解答php传值赋值的相关问题,此外,我们还将为您提供关于conversation是什么意思PHP下编码转换函数mb

在本文中,我们将给您介绍关于php – base_convert和负数的详细内容,并且为您解答php传值赋值的相关问题,此外,我们还将为您提供关于conversation是什么意思 PHP下编码转换函数mb_convert_encoding与iconv的使用说明、converse one star PHP mb_convert_encoding 获取字符串编码类型实现代码、conversionpattern php 转换字符串编码 iconv与mb_convert_encoding的区别说明、DataGuard---->备库参数db_file_name_convert和log_file_name_convert的作用的知识。

本文目录一览:

php – base_convert和负数(php传值赋值)

php – base_convert和负数(php传值赋值)

base_convert()函数似乎不保留符号.

例如:

var_dump (base_convert ('-100', 10, 10));

这个输出是100

有没有办法转换基地而不会丢失标志?

解决方法:

我没有看到PHP标准功能这样做,但你可以编写自己的.

function signed_base_convert($number, $src_base, $dest_base)
{
    $sign = (intval($number, $src_base) >= 0 ? '' : '-');
    return $sign . base_convert($number, $src_base, $dest_base);
}

我目前无法访问PHP来测试它,但它应该给你一个好主意.

conversation是什么意思 PHP下编码转换函数mb_convert_encoding与iconv的使用说明

conversation是什么意思 PHP下编码转换函数mb_convert_encoding与iconv的使用说明

不过英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。
mb_convert_encoding的用法见官方:
http://cn.php.net/manual/zh/function.mb-convert-encoding.php
做一个GBK To UTF-8

复制代码 代码如下:

立即学习“PHP免费学习笔记(深入)”;


header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK");
?>


再来个GB2312 To Big5

复制代码 代码如下:

立即学习“PHP免费学习笔记(深入)”;


header("content-Type: text/html; charset=big5");
echo mb_convert_encoding("你是我的朋友", "big5", "GB2312");
?>

不过要使用上面的函数需要安装但是需要先enable mbstring 扩展库。
PHP中的另外一个函数iconv也是用来转换字符串编码的,与上函数功能相似。
下面还有一些详细的例子:
iconv — Convert string to requested character encoding
(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — Convert character encoding
(PHP 4 >= 4.0.6, PHP 5)
用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;
string iconv ( string in_charset, string out_charset, string str )
注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failure.
使用:
发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.
一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.
from_encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. If it is not specified, the internal encoding will be used.
/* Auto detect encoding from JIS, eucjp-win, sjis-win, then convert str to UCS-2LE */
$str = mb_convert_encoding($str, “UCS-2LE”, “JIS, eucjp-win, sjis-win”);
/* “auto” is expanded to “ASCII,JIS,UTF-8,EUC-JP,SJIS” */
$str = mb_convert_encoding($str, “EUC-JP”, “auto”);
例子:

复制代码 代码如下:

立即学习“PHP免费学习笔记(深入)”;


$content = iconv("GBK", "UTF-8", $content);
$content = mb_convert_encoding($content, "UTF-8","GBK");


PHP中使用mb_convert_encoding转码的小陷阱
在php程序中使用mb_convert_encoding()方法进行字符编码转换大家都很熟悉了,平时也在大量的使用。而且在一般情况下该方法也表现的足够好,值得表扬。但在一个项目中我们需要使用它进行UTF8到GBK的转换,在转换一些特殊字符时发现了一个不大不小的问题。具体表现为mb把在utf8可编码的字符而在gbk中不可编码的字符都转成了\0x00\0x80,这样就导致转换后的gbk字符是有问题的。
在我们的意识中,在进行字符编码转换的过程中,如果遇到目标编码不可表现的字符,转码程序应该做的是舍弃这种字符,这样虽然丢失了部分数据,但不会导致转码的字符序列不可用。不清楚mb为什么要使用上述方式而不是舍弃方式。
临时的解决方式是对转码后的字符串序列进行过滤,过滤掉所有\x00\80的字符;又或者在转义之前对utf8的字符串进行过滤,过滤掉ut8可表示而gbk不可表示的所有字符,从实现难度上来讲,第一种过滤方式比较容易做到。

以上就介绍了conversation是什么意思 PHP下编码转换函数mb_convert_encoding与iconv的使用说明,包括了conversation是什么意思方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

converse one star PHP mb_convert_encoding 获取字符串编码类型实现代码

converse one star PHP mb_convert_encoding 获取字符串编码类型实现代码

后来又在手册上找到了is_utf8函数,这样,再结合iconv函数,我的问题就解决了。下面帖出这个函数:

复制代码 代码如下:


function is_utf8($string) {
return preg_match(''%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs'', $string);
} // function is_utf8


如果想深入研究,建议看下PHP手册上的“Multibyte String Functions”这一部分的内容。

以上就介绍了converse one star PHP mb_convert_encoding 获取字符串编码类型实现代码,包括了converse one star方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

conversionpattern php 转换字符串编码 iconv与mb_convert_encoding的区别说明

conversionpattern php 转换字符串编码 iconv与mb_convert_encoding的区别说明

iconv — Convert string to requested character encoding(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — Convert character encoding(PHP 4 >= 4.0.6, PHP 5)
用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先启用 mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
string iconv ( string in_charset, string out_charset, string str )
注意:
第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,
其中:
//TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,
//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failure.
使用:
1. 发现iconv在转换字符"-"到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这
个"-"都无法转换成功,无法输出。另外mb_convert_encoding没有这个bug.
2. mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;如:$str =
mb_convert_encoding($str,"euc-jp","ASCII,JIS,EUC-JP,SJIS,UTF- 8");“ASCII,JIS,EUC-JP,SJIS,UTF-8”的顺序不同效果也有
差异
3. 一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数
.
from_encoding is specified by character code name before conversion. it can be array or string - comma separated
enumerated list. If it is not specified, the internal encoding will be used.
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");
$str = mb_convert_encoding($str, "EUC-JP'', "auto");
例子:
$content = iconv("GBK", "UTF-8", $content);
$content = mb_convert_encoding($content, "UTF-8", "GBK");

以上就介绍了conversionpattern php 转换字符串编码 iconv与mb_convert_encoding的区别说明,包括了conversionpattern方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

DataGuard---->备库参数db_file_name_convert和log_file_name_convert的作用

DataGuard---->备库参数db_file_name_convert和log_file_name_convert的作用

一、参数说明

[1] db_file_name_convert

db_file_name_convert 主数据库和备用数据库的数据文件转换目录对映(如果两数据库的目录结构不一样),如果有多个对映,逐一指明对映关系。

格式: *.db_file_name_convert= 主数据库数据文件目录,备用数据库数据文件目录

[2] log_file_name_convert

指明主数据库和备用数据库的log文件转换目录对映。

格式: *. log_file_name_convert=主数据库log目录,备用数据库目录

二、作用过程:

下面通过跟踪恢复从库的过程来分析这从库参数文件中db_file_name_convert和log_file_name_convert的作用:

1.dataguard的主库完全备份数据库;

2.将主库的完全备份复制到从库的相应位置

3.恢复从库,下面到了最关键部分了

    用主库的备份来恢复从库,可以想到从库恢复出来中的控制文件和主库的控制一样。但是我们想使主从库的数据文件路径、联机日志路径不同; 最关键的参数要用到了,那就是db_file_name_convert和log_file_name_convert

      从库通过主库的备份恢复控制文件--->恢复控制文件时,oracle查看从库参数文件中的db_file_name_convert和log_file_name_convert参数---->将主库保存数据文件、联机日志的路径转换成从库保存数据文件、联机日志的路径---->生成从库的控制文件

      所以,db_file_name_convert和log_file_name_convert这两个参数像桥梁一样,来完成转换dataguard的主库和从库数据文件和联机日志保存路径不同的问题。:

      验证1:备库未配置db_file_name_convert和log_file_name_convert

      备库未配置db_file_name_convert和log_file_name_convert
      Standby>show parameter convert
      
      NAME                     TYPE            VALUE
      ------------------------------------ ---------------------- ------------------------------
      db_file_name_convert             string
      log_file_name_convert             string
      Standby>
      主库新增数据文件/usr/oracle/app/oradata/orcl/tb01.dbf 和 /usr/oracle/app/oradata/tb02.dbf
      Primary>create tablespace TB01 datafile ''/usr/oracle/app/oradata/orcl/tb01.dbf'' size 1m autoextend on;
      Tablespace created.
      
      Primary>create tablespace TB02 datafile ''/usr/oracle/app/oradata/tb02.dbf'' size 1m autoextend on;
      
      Tablespace created.
      
      Primary>select  name from v$datafile;
      
      NAME
      -----------------------------------------------------------------------------------------------------------------------------/usr/oracle/app/oradata/orcl/system01.dbf
      /usr/oracle/app/oradata/orcl/sysaux01.dbf
      /usr/oracle/app/oradata/orcl/undotbs01.dbf
      /usr/oracle/app/oradata/orcl/users01.dbf
      /usr/oracle/app/oradata/orcl/tb01.dbf /usr/oracle/app/oradata/tb02.dbf
      
      6 rows selected.
      
      Primary>

      备库执行

      alter database recover managed standby database disconnect from session;

      结果如下

      Standby>select  name from v$datafile;
      
      NAME
      ----------------------------------------------------------------------------------------------------
      /usr/oracle/standby/app/oradata/orcl_standby/system01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/sysaux01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/undotbs01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/users01.dbf
      /usr/oracle/app/oradata/orcl/tb01.dbf /usr/oracle/app/oradata/tb02.dbf

      路径和主库的路径相同

      验证2:备库配置了db_file_name_convert和log_file_name_convert

      备库配置了db_file_name_convert和log_file_name_convert

      Standby>show parameter convert
      
      NAME                     TYPE            VALUE
      ------------------------------------ ---------------------- ------------------------------
      db_file_name_convert             string            /usr/oracle/app/oradata/orcl/,/usr/oracle/standby/app/oradata/orcl_standby/
      log_file_name_convert             string     /usr/oracle/app/oradata/orcl/,/usr/oracle/standby/app/oradata/orcl_standby/

      备库执行

      alter database recover managed standby database disconnect from session;

      结果如下

      Standby>select name from v$datafile;
      
      NAME
      ----------------------------------------------------------------------------------------------------
      /usr/oracle/standby/app/oradata/orcl_standby/system01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/sysaux01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/undotbs01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/users01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/tb01.dbf /usr/oracle/app/oradata/tb02.dbf

      结果db_file_name_convert = ‘/usr/oracle/app/oradata/orcl/’,‘/usr/oracle/standby/app/oradata/orcl_standby/’起作用了

      /usr/oracle/app/oradata/orcl/tb01.dbf   转换成了 /usr/oracle/standby/app/oradata/orcl_standby/tb01.dbf

       /usr/oracle/app/oradata/tb02.dbf 未被转换,因为不符合

      switchover后,当前的备库(以前的主库)未配置db_file_name_convert和log_file_name_convert

      1、未配置db_file_name_convert和log_file_name_convert的情况,从库同步后的数据文件和主库路径相同

      主库新增了一个数据文件/usr/oracle/standby/app/oradata/orcl_standby/dg01(不要受orcl_standby的影响,这里执行过switchover,以前的备库是当前的主库)

      SQL> select name  from v$datafile;
      
      NAME
      --------------------------------------------------------------------------------
      /usr/oracle/standby/app/oradata/orcl_standby/system01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/sysaux01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/undotbs01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/users01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/dg01

      从库的结果

      SYS@orcl>select name from v$datafile;
      
      NAME
      -----------------------------------------------------------------------------------------------------------------------------/usr/oracle/app/oradata/orcl/system01.dbf
      /usr/oracle/app/oradata/orcl/sysaux01.dbf
      /usr/oracle/app/oradata/orcl/undotbs01.dbf
      /usr/oracle/app/oradata/orcl/users01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/dg01

      switchover后,当前的备库(以前的主库)配置了db_file_name_convert和log_file_name_conver

      在当前的备库(以前的主库)执行以下的语句

      alter system set  DB_FILE_NAME_CONVERT=''/usr/oracle/standby/app/oradata/orcl_standby/'',''/usr/oracle/app/oradata/orcl/'' scope=spfile;
      alter system set LOG_FILE_NAME_CONVERT=''/usr/oracle/standby/app/oradata/orcl_standby/'',''/usr/oracle/app/oradata/orcl/'' scope=spfile;

      当前的主库(以前的备库)新增一个数据文件 /usr/oracle/standby/app/oradata/orcl_standby/dg02

      SQL> select name  from v$datafile;
      
      NAME
      --------------------------------------------------------------------------------
      /usr/oracle/standby/app/oradata/orcl_standby/system01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/sysaux01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/undotbs01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/users01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/dg01
      /usr/oracle/standby/app/oradata/orcl_standby/dg02
      
      6 rows selected.

      当前的备库(以前的主库)同步后的结果

      SYS@orcl>select name from v$datafile;
      
      NAME
      -----------------------------------------------------------------------------------------------------------------------------/usr/oracle/app/oradata/orcl/system01.dbf
      /usr/oracle/app/oradata/orcl/sysaux01.dbf
      /usr/oracle/app/oradata/orcl/undotbs01.dbf
      /usr/oracle/app/oradata/orcl/users01.dbf
      /usr/oracle/standby/app/oradata/orcl_standby/dg01
      /usr/oracle/app/oradata/orcl/dg02

      /usr/oracle/standby/app/oradata/orcl_standby/dg02 被转换成了 /usr/oracle/app/oradata/orcl/dg02

      建议:主库备库都配置db_file_name_convert和log_file_name_conver,这样不过怎样switchover,数据文件和redo log文件的位置都非常清晰。

      我们今天的关于php – base_convert和负数php传值赋值的分享已经告一段落,感谢您的关注,如果您想了解更多关于conversation是什么意思 PHP下编码转换函数mb_convert_encoding与iconv的使用说明、converse one star PHP mb_convert_encoding 获取字符串编码类型实现代码、conversionpattern php 转换字符串编码 iconv与mb_convert_encoding的区别说明、DataGuard---->备库参数db_file_name_convert和log_file_name_convert的作用的相关信息,请在本站查询。

      本文标签: