PHP中的中文截取乱码问题_gb2312_utf-8

一、字符串编码为gb2312,一个中文占俩字节

?




public static function chinesesubstr($str, $start, $len) { // $str指字符串,$start指字符串的起始位置,$len指字符串长度

        $strlen
= $start + $len; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度

        for($i
= $start; $i
< $strlen;) {

            if
(ord ( substr
( $str, $i, 1 ) ) > 0xa0) { // 如果字符串中首个字节的ASCII序数值大于0xa0,则表示汉字

                $tmpstr
.= substr
( $str, $i, 2 ); // 每次取出两位字符赋给变量$tmpstr,即等于一个汉字

                $i=$i+2; // 变量自加2

            } else{

                $tmpstr
.= substr
( $str, $i, 1 ); // 如果不是汉字,则每次取出一位字符赋给变量$tmpstr

                $i++;

            }

        }

        return
$tmpstr; // 返回字符串

    }

二、字符串编码为utf-8,一个中文占仨字节

?




public static function chinesesubstr($str, $start, $len) { // $str指字符串,$start指字符串的起始位置,$len指字符串长度

        $strlen
= $start + $len; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度

        for($i
= $start; $i
< $strlen;) {

            if
(ord ( substr
( $str, $i, 1 ) ) > 0xa0) { // 如果字符串中首个字节的ASCII序数值大于0xa0,则表示汉字

                $tmpstr
.= substr
( $str, $i, 3 ); // 每次取出三位字符赋给变量$tmpstr,即等于一个汉字

                $i=$i+3; // 变量自加3

            } else{

                $tmpstr
.= substr
( $str, $i, 1 ); // 如果不是汉字,则每次取出一位字符赋给变量$tmpstr

                $i++;

            }

        }

        return
$tmpstr; // 返回字符串

    }

  

PHP中的中文截取乱码问题_gb2312_utf-8,布布扣,bubuko.com

时间: 2024-10-26 20:56:09

PHP中的中文截取乱码问题_gb2312_utf-8的相关文章

js的url中传递中文参数乱码,如何获取url中参数问题

一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript”> function send(){ var url = "test01.html"; var userName = $("#userName").html(); window.open(encodeURI(url + "?userName="

jmeter察看结果树—响应数据中的中文显示乱码的问题

jmeter察看结果树-响应数据中的中文显示乱码的问题: 打开文件:jmeter\bin\jmeter.properties 原始内容: 默认编码为:ISO-8859-1 # The encoding to be used if none is provided (default ISO-8859-1) #sampleresult.default.encoding=ISO-8859-1 修改为: sampleresult.default.encoding=utf-8 修改配置后,要重启jmete

java web中请求和响应中包含中文出现乱码解析

说明:在计算机中保存的一切文本信息是以一定的编码表(0,1,0,1)来保存我们所认识的字符(汉字或英文字符),由字符到计算机存储的二进制过程是编码,由读取二进制到文本的过程称为解码.而字符编码有多种不同的编码表,所以,如果编码格式和解码格式不是同一个码表就会出现乱码.想要避免出现乱码,需要使保存和读取时使用相同的码表. 在java web编程中经常会出现乱码,现在详细讲解一下如何进行设置,避免乱码 1 网页编码 在编写网页的时候,需要指定网页的编码格式,使用<meta http-equiv=&quo

ORACLE 11G中PLSQL中文显示乱码、Linux下sqlplus查询中文乱码

问题描述: 本地是win7操作系统,cmd里面sqlplus进去连接oracle数据库,中文可以正常显示,但是plsql连接oracle数据库,中文显示乱码,还有xshell远程连接oracle服务器登录进去使用sqlplus登录也显示中文乱码. 1.检查windows7下面cmd里面sqlplus中oracle server端的字符集. 打开cmd,用sqlplus登录,输入下面SQL查询服务端的字符集. SQL> select userenv('language') fromdual; US

jsp与mysql中的中文字符乱码问题

刚开始自学jsp,在练习的过程中遇到了一个很严重的问题,就是中文字符乱码的问题,我用了三天的时间,搜集资料,终于解决了这个问题,现在对学到的东西进行一下总结整理. 1.首先是jsp页面显示乱码的问题,<title></title>标签中有中文有英文,设置<meta charset="utf-8" > 显示乱码,改为gbk则可正常显示,其他页面使用utf-8则显示正常.最终发现是因为文件创建是用了不同的方法,一般情况下,用记事本编写代码,文件另存为*.

Web中的中文参数乱码

中文参数乱码    1 get方式传参,中文乱码        修改tomcat中的配置server.xml        在修改端口的标签中添加属性URIEncoding="XXX"        <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort=

AJAX在GBK编码页面中传中文参数乱码的问题

---恢复内容开始--- 页面编码是GBK的情况下传递中文有乱码,解决方法如下: 在ajax传递前用若是Array,JSON,等其它对象,可用JSON.stringfy字符串序列化后,赋值给ajax传递, 在后台获取后,对于未使用JSON.stringfy序列化的情况下,直接转码:将utf-8转成gbk编码的,再处理. 在后台进行转码. mb_convert_encoding($brand_name, "GBK", "utf-8"); 另一种解决方法 jQuery(

php解决中文截取乱码问题

针对截取字符串出现中文乱码问题,网上有很多介绍,也有很多函数,但笔者看着网上的函数,总感觉有点别扭, 所以自己动手写了一个防止截取字符串时出现中文乱码的函数. 实现的原理还是比较简单,主要是利用ASCII编码和中文编码的二进制范围不一致而把它们区分开来,然后,通过substr()截取字符串的函数实现的. 下面给出我写的代码,注意:我这里只针对utf-8编码,其他编码,看官可以自己手动改一下函数,以便支持其他的编码. <?php header('content-type:text/html;cha

Servlet内容中的中文显示乱码问题

一.常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.java.nio.charset.Charset.defaultCharset() 获得平台默认字符编码: 3.getBytes() 是通过平台默认字符集进行编码: 二.中文乱码出现 在学习任何一门技术时,经常会有初学者遇到中文乱码问题,比如MySQL,是因为在安装时没有设置:而在Servlet中,也会遇到中文乱码问题: 比如: OutputStream out = response.