• php使用iconv进行从utf8转为gb2312字符编码出错解决方案


    在php函数库有一个函数:iconv()

    把gb2312置换成utf-8

    1 $text=iconv("GB2312","UTF-8",$text);

    在用$text=iconv(“UTF-8″,”GB2312″,$text)过程中,如果遇到一些特别字符时,如:”—”,英文名中的”.”等等字符,转换就断掉了。这些字符后的文字都没法继续转换了。

    针对这的问题,可以用如下代码实现

    1 $text=iconv("UTF-8","GBK",$text);

    你没有看错,就这么简单,不使用gb2312,而写成GBK,就可以了。

    还有一种方法:

    第二个参数,加上//IGNORE,忽略错误,如下:

    1 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.

    例子 1. iconv() example:
    <?php
    echo iconv(“ISO-8859-1″, “UTF-8″, “This is a test.”);
    ?>

    string iconv ( string $in_charset , string $out_charset , string $str )

    在使用这个函数进行字符串编码转换时,需要注意,如果将utf-8转换为gb2312时,可能会出现字符串被截断的情况发生。

    此时可以使用以下方法解决:

    1 $str=iconv('utf-8',"gb2312//TRANSLIT",file_get_contents($filepath));

    即在第二个参数出添加红色字部分,表示:如果在目标编码中找不到与源编码相匹配的字符,会选择相似的字符进行转换。

    此处也可以使用://IGNORE 这个参数,表示忽略不能转换的字符。

  • 相关阅读:
    面试6 在c#中如何声明一个类不能被继承
    面试5 如何理解静态变量,局部变量,全局变量
    面试4 你在什么情况下会用到虚方法?它与接口有什么不同
    面试3 不用系统自带的方法将字符串类型123456转换为值类型
    面试2 递归的算法求1,1,2,3,5,8.......的第30位数是多少,然后求这些数的和.
    面试1 SQL SERVER 查询第20行到30之间的数据
    ubuntu安装nginx
    ubuntu上使用ufw配置管理防火墙
    ubuntu上安装docker
    ubuntu上使用vim编辑文本内容
  • 原文地址:https://www.cnblogs.com/17too/p/1913336.html
Copyright © 2020-2023  润新知