zoukankan      html  css  js  c++  java
  • PHP截取中文乱码问题(0xa0)

    最近在做提取文章开头的一部分时,遇到了汉字截取出现乱码的情况,在网上搜了一通,看了许多,自己总结了一下与大家分享。
    看前须知:
    如果ASCii码大于0xa0就是半个汉字;
    了解substr()、mb_substr()、ord()。

    <?php
    /**
    *———————————-
    *首先定义自己的函数:
    *———————————-
    */
    function mysubstr($string, $start, $length)
    {
    if(strlen($string)>$length)
    {
    $str=”;
    $len=$start+$length;
    for($i=$start;$i<$len;$i++)
    {
    if(ord(substr($string,$i,1))>0xa0)
    {
    $str.=substr($string,$i,2);
    $i++;
    }
    else{ $str.=substr($string,$i,1);}
    }
    return $str.’…’;
    }
    else{ return $string;}
    }
    /**
    *—————————————————————————————————————–
    *PHP有一个mbstring扩展库可以用(有朋友面试PHP的时候还被问到过这个问题哦),但是  * 一般的服务器都没打开php_mbstring.dll,需要在 *php.ini里把php_mbstring.dll打开,如果没有权限的话就只有联系你的ISP了。
    *因为mb_string的效率高一些,所以我们先检查一下mb_string是否可以用:
    *—————————————————————————————————————–
    */
    if(function_exists(‘mb_string’))
    {
    mb_substr($string,$start,$length,$encoding);
    //other codes here
    }
    else mysubstr($string,$start,$length);// 调用自己的函数
    ?>

    还有一个问题要注意,使用这种方法的时候,你的<head>标签对里的charset只有设成中文的编码才可以,如GBK,GB2312。

  • 相关阅读:
    oracle全文检索笔记
    java命令行运行带外部jar
    xstream对象xml互转
    spring postconstruct
    eclipse tomcat内存设置
    tomcat PermGen space
    springmvc+mybatis如何分层
    maven+springmvc+easyui+fastjson+pagehelper
    eclipse优化配置
    CodeSmith生成Entity时SourceTable.Description换行不注释
  • 原文地址:https://www.cnblogs.com/JavaTechLover/p/2560514.html
Copyright © 2011-2022 走看看