php函数substr_replace中文乱码的替代解决方法

        $str = "中华人民共和国";
        $len = mb_strlen($str,‘utf-8‘);
        if($len>=6){
            $str1 = mb_substr($str,0,2,‘utf-8‘);
            $str2 = mb_substr($str,$len-2,2,‘utf-8‘);
        }
        else{
            $str1 = mb_substr($str,0,1,‘utf-8‘);
            $str2 = mb_substr($str,$len-1,1,‘utf-8‘);
        }

        $this->assign(‘str1‘,$str1);
        $this->assign(‘str2‘,$str2);
        $this->assign(‘str‘,$str1.‘**‘.$str2);
        $this->assign(‘strold‘,substr_replace($str,‘**‘,2,2));

输出结果为:

中华

和国

中华**和国

??**??人民共和国

substr_replace函数有些缺陷,中文替代会出现乱码,使用mb_substr函数截取函数再连接字符串解决,虽然有点丑陋,但能解决问题。

时间: 2024-10-24 10:04:29

php函数substr_replace中文乱码的替代解决方法的相关文章

CentOS中文乱码问题的解决方法

一.CentOS系统访问 xxx.cn ,发现中文乱码于是用以前的方式:# yum -y install fonts-chinese # yum -y install fonts-ISO8859 CentOS系统安装完成后,重新启动即可. 二.终端. gedit 显示乱码# vim /etc/sysconfig/i18n 将:LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" 修改原内容为: LANG="zh_CN

jquery.ajax的url中传递中文乱码问题的解决方法

jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1 ISO8859-1,通常叫做Latin-1.Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符. JQuery的Ajax根本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题. 而我们的UTF-8

windows下mysql中文乱码, 配置解决方法

内容源自:windows下mysql中文乱码, 配置解决方法 解决方法:打开mysql安装目录,打开my.ini文件(如果只有my-default.ini文件,先将其改名为my.ini!!!) 修改内里配置: [mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8 如图: 修改完成后重启MySQL服务:(右键重新启动) 完成: 原文地址:ht

详解Linux中文乱码问题终极解决方法

详解Linux中文乱码问题终极解决方法 方法一: 修改/root/.bash_profile文件,增加export LANG=zh_CN.GB18030 该文件在用户目录下,对于其他用户,也必须相应修改该文件. 使用该方法时putty能显示中文,但桌面系统是英文,而且所有的网页中文显示还是乱码 例: cd ~ vim .bash_profile 直接写入 export LANG=zh_CN.GB18030 之后重启 就ok了 方法二: 修改/etc/sysconfig/i18n文件 #LANG=

PHP中文乱码的常见解决方法总结

PHP中文乱码是PHP开发中的常见问题之一.PHP中文乱码有时发生在网页本身,有些产生在于MySQL交互的过程中,有时与操作系统有关.下面进行一番总结. 一.首先是PHP网页的编码 1. php文件本身的编码与网页的编码应匹配 a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加<meta http-equiv="Content-Type" content=

XShell连接CentOS 7.2显示中文乱码问题的解决方法

背景 使用U盘往Windows主机.Linux主机传文件还是经常的事,但有时候文件名有中文, 传到Linux机器会有乱码,选择起来也很麻烦,最近刚好遇到,写下解决方法. 环境 Linux [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [[email protected]-base ~]# echo $LANG en_US.UTF-8 [[email protected]-ba

Linux中文乱码问题终极解决方法

方法一: 修改/root/.bash_profile文件,增加export LANG=zh_CN.GB18030该文件在用户目录下,对于其他用户,也必须相应修改该文件. 使用该方法时putty能显示中文,但桌面系统是英文,而且所有的网页中文显示还是乱码 方法二:修改/etc/sysconfig/i18n文件 #LANG="en_US.UTF-8"#SUPPORTED="en_US.UTF-8:en_US:en"#SYSFONT="latarcyrheb-s

Get,Post请求中文乱码问题有效解决方法

对于做Java WEB项目同学来说,中文乱码问题是一个经常遇到而又非常头痛的问题,而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程,至于出现乱码的原因不是本文的关注的重点,想了解的朋友可以参考 http://zhaomin819111.blog.163.com/blog/static/10659004200943112950956/ 本文主要介绍如何有效解决web请求中的乱码问题,其实解决方法有很多种,不同的请求类型解决方法也不相同. 本文只介绍最方便的一种: 1.针对Post方式提交的

eclipse中生成的html存在中文乱码问题的解决方法

最近在做测试报告生成时遇到了个中文乱码的问题,虽然在html创建过程中设置了编码格式htmlReporter.config().setEncoding("UTF-8");但是生成的html打开依旧乱码. 下面说一下解决方法,其实是eclipse选择中文版本时,很多默认编码格式都设置为GBK了,如下所示: 这里我们选择其他中的UTF-8,如下图所示: 然后点击右下角的===>"应用"按钮进行保存,为了保险起见我又在"内容类型"中的html中设