博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mbstring扩展导致中文乱码
阅读量:7189 次
发布时间:2019-06-29

本文共 732 字,大约阅读时间需要 2 分钟。

本文目的

mbstring是php的一个标准扩展,源代码在php_src/ext/mbstring中。主要用于处理多字节编码的字符串,如UTF-8,GBK等。php内置的字符串处理函数(如strlen等)将字符串当作字节数组处理,如果直接用来处理中文,可能会导致中文乱码(中文编码方式可以参考这篇文章)。但是,如果mbstring使用不当,也会导致乱码现象。最近就遇到这个问题,所以记录下来,作为备忘。

乱码现象

看看下面的代码:

上面的代码主要是将字符串中的标点剔除(php脚本需要使用utf-8编码),执行结果如下:

出现乱码了。

原因&解决方法

导致原因很简单,虽然你使用了mbstring库中的函数处理多字节字符串,但是php仍然不知道被处理的字符串是什么编码。可以使用命令”php –i | grep mbstring”来看看相关配置,如下图:

默认的mbstring.internal_encoding的值为‘no value’,说明没有明确表示php源代码是以何种方式编码,从而导致了错误的处理方式,乱码很容易发生。

问题关键在于设置mbstring.internal_encoding,给出明确的编码规则。修改后,如下图所示(此配置在php.ini中):

修改后,再运行命令“php –i | grep mbstring”,得到如下结果,表示修改生效:

再次运行上面的程序,得到如下结果:

没有乱码,处理后的字符串将标点全部剔除。

参考资料

  • 本文转自bourneli博客园博客,原文链接:http://www.cnblogs.com/bourneli/archive/2012/09/22/2698043.html,如需转载请自行联系原作者
你可能感兴趣的文章
cordova 环境搭建
查看>>
json所需包
查看>>
Android中ContentProvider和Uri用法
查看>>
.Net Core 简单定时任务框架封装
查看>>
php curl 的几个常用实例
查看>>
Xcache缓存器的介绍、使用及配置
查看>>
基于左右值的无限分类算法
查看>>
windows系统安装redis
查看>>
分布式轻量级框架 设计&实现 3 - 定义基础包
查看>>
今天的上课感受
查看>>
apps被拒绝的各种理由以及翻译
查看>>
Thinking in Java 笔记
查看>>
注册IOS企业/公司开发者账号流程
查看>>
How to fix libtool: Version mismatch error
查看>>
HCDN——CDN+P2P融合技术-秦建华
查看>>
周兴社-可穿戴计算与健康服务
查看>>
UITextView for Code
查看>>
AlertPickerView
查看>>
ISColumnsController
查看>>
部分JVM参数解释
查看>>