
php函数库中有一个函数: iconv(),iconv函数库可以完成各种字符集之间的转换,并且是php编程中必不可少的基本函数库.
我最近正在开发一个小偷程序. 我需要使用iconv函数将捕获的UTF-8编码页面转换为gb2312. 我发现只有iconv函数会毫无理由地将捕获的数据转换为转码数据. 减. 我有些沮丧,我检查了一下信息,发现这是iconv函数中的错误. 将字符“-”转换为gb2312时,iconv将出错.
让我们看一下此功能的用法.
最简单的应用程序,用utf-8替换gb2312:
$text=iconv("GB2312","UTF-8",$text);
在使用$ text = iconv(“ UTF-8”,“ GB2312”,$ text)的过程中,如果遇到一些特殊字符,例如: “ —”,“. ”. 英文名称,转换已中断. 这些字符之后的文本将无法再转换.

对于此问题,您可以使用以下代码:
$text=iconv("UTF-8","GBK",$text);
您没看错,就这么简单,不用gb2312,只需将其写为GBK.
还有另一种方法,第二个参数加// IGNORE,忽略该错误,如下所示:
iconv("UTF-8","GB2312//IGNORE",$data);
这两种方法之间没有具体的比较,我觉得第一种方法(GBK代替gb2312)更好.

PHP手册中的
iconv()说明:
iconv (PHP 4 >= 4.0.5, PHP 5) iconv – Convert string to requested character encoding Description string iconv ( string in_charset, string out_charset, string str ) Performs a character set conversion on the string str from in_charset to out_charset. Returns the converted string or FALSE on failure. If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character.
使用此功能进行字符串编码转换时,应注意,如果将utf-8转换为gb2312,则字符串可能会被截断. 目前,您可以使用以下方法解决:
$str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));
这是在第二个参数中添加红字部分,这意味着如果在目标代码中找不到与源代码匹配的字符,则将选择一个相似的字符进行转换. 您还可以在这里使用: // IGNORE此参数表示无法转换的字符将被忽略.

ignore表示在转换期间忽略错误. 如果没有忽略参数iconv函数库,则无法保存该字符之后的所有字符串.
iconv不是PHP的默认功能,而是默认安装的模块. 需要先安装它.
如果是Windows2000 + php,则可以修改php.ini文件,删除“;”. 在extension = php_iconv.dll之前,您需要将原始php安装文件下的iconv.dll复制到winnt / system32下(如果dll指向此目录). 在Linux环境中,使用静态安装,在配置时再添加一个--with-iconv,phpinfo可以看到iconv项. (Linux7.3 + Apache4.06 + php4.3.2).
mb_convert_encoding函数用于转换编码. 以前我不了解程序编码的概念,但现在似乎有点尴尬. 但是,英语通常没有编码问题,只有中文数据会出现此问题. 例如,当您使用Zend Studio或Editplus编写程序时,将使用gbk编码. 如果需要将数据输入,并且编码为utf8,则必须对数据进行编码和转换,否则在进入时会出现乱码.
成为UTF-8的GBK:
<?php
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("妳係我的友仔", "UTF-8", "GBK");
?>

另一个Big23 GB2312:
<?php
header("content-Type: text/html; charset=big5");
echo mb_convert_encoding("你是我的朋友", "big5", "GB2312");
?>
但是,要使用上述功能,需要安装它,但需要首先启用mbstring扩展库.
字符串mb_convert_encoding(字符串striconv函数库,字符串to_encoding [,混合from_encoding])需要首先在php.ini中启用mbstring扩展库;扩展名=之前的php_mbstring.dll;删除mb_convert_encoding可以指定多个输入编码,它将基于内容自动识别,但是执行效率比iconv差很多;
string iconv(字符串in_charset,字符串out_charset,字符串str)注意: 除了指定要转换为的编码外,第二个参数还可以添加两个后缀: // TRANSLIT和// IGNORE,其中TRANSLIT将自动将无法直接转换的字符转换为一个或多个近似字符,// IGNORE将忽略无法转换的字符,默认效果是从第一个非法字符截断.
通常使用iconv,仅当无法确定原始编码是什么或者转换后无法正常显示iconv时,才使用mb_convert_encoding函数.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-228190-1.html
小米你为何如此diao
没有马云也会有张云李云