rtrim函数的一个坑
简述一下今天遇到的问题:
在我的代码里面有如下代码段:
<?phpheader("Content-type:text/html;charset=utf8");echo rtrim("威、","、");
本来的预想是输出“威”。然而事与愿违,输出了几个乱码。这是为什么呢?容我细细道来。
首先要知道rtrim函数的功能,它的第二个参数是一个string,其中的每个char都会被拿出来作为将要被去除的字符。比如这样:
<?phpecho rtrim("blakefezabc", "cab");//output blakefez
是的,输出结果是blakefez。
这个函数的实现应该也比较简单:
①、从第一个参数的最后一个字符开始向左遍历,判断该字节是否在第二个参数中。
②、如果存在则去掉该字节,继续第一步。如果不存在,则结束。
请注意,我上面用的是字节。是的,这个函数是非multibyte-safe的函数。也就是说,当我们的参数中有些字符是多字节的,那么就会产生不想要的结果。比如一开始说的rtrim(“威、”, “、”)。由于”威”和”、”都是utf8编码的。也就是多字节字符。其中,”威”的编码是0xE5 0xA8 0x81,”、”的编码是0xE3 0x80 0x81,所以,在rtrim函数眼里,它看到的是:rtrim(“0xE5 0xA8 0x81 0xE3 0x80 0x81”, “0xE3 0x80 0x81”);所以最后输出的结果就是0xE5 0xA8,这时候再转换为utf8编码,就变成乱码啦。
rtrim函数的一个坑相关推荐
- 2 560.26 php,php rtrim的一个坑,很“二”的问题
一.背景: 做项目的时候遇到一种情况,商家的营业时间显示的问题,设计图上要求显示成:"星期一,星期二,星期三,星期四,星期五,星期六,星期天" 换句话说,就是营业星期勾哪个就显示哪 ...
- linux编译动态库未定义,GCC链接库的一个坑:动态库存在却提示未定义动态库的函数...
背景 在GCC中已经指定链接库,然而编译时却提示动态库函数未定义! 测试出现的错误提示如下: [GMPY@13:48 tmp]$gcc -o test -L. -lmylib test.c /tmp/ ...
- 写一个rtrim()函数消除字符串后面的空格字符。编main函数调用测试它。
写一个rtrim()函数消除字符串后面的空格字符.编main函数调用测试它. **提示信息:"请输入一个字符串:" **输出格式要求:"去掉右边的空格后为%s!\n&qu ...
- vue组件双向绑定.sync修饰符的一个坑
我们知道组件是单项的,但是有时候需要双向,这时候我们可以使用.sync修饰符,但今天遇到一个坑,一直不成功,花了半小时试出来的.... 在编程的时候我们很习惯冒号后面跟着空格.而.sync双向绑定需要 ...
- PHP两文件嵌套循环引用,php的循环与引用的一个坑,php循环引用_PHP教程
php的循环与引用的一个坑,php循环引用 上代码 $arr = array('a'=> 'a11', 'b'=> 'b22', 'c'=> 'c33',);foreach ($ar ...
- 微信网页开发wx.getLocation在安卓手机上的一个坑
我在wx.getLocation的成功回调函数里,执行了一句 this.lon = res.longitude.toFixed(6) 在苹果手机和调试工具上都是能获取到数据的,但是在安卓手机上this ...
- 关于Openlayers Overlay事件监听的一个坑
一.问题产生: 我使用Overlay创建标绘操作的小方块元素,如下代码和如图. 然后我监听小方块的mousedown事件.用原始的事件监听: element.addEventListener('mou ...
- Oracle 你真的会用ltrim/rtrim函数吗?
查看原文:http://www.ibloger.net/article/255.html 常见的用法是去除空格,有多少人不知道它们其实还可以做到去除空格,它有ltrim().ltrim(x,y)方法 ...
- 浅谈对象数据赋值问题---我遇到的一个坑
今天在做一个大型网站表格导入的时候,我踩了一个坑,让宝宝我好忧伤,感觉智商的倒退 看到这个数据重复的问题,还以为我没错,结果狠狠打脸啊,伤心的不要不要的 话不多说,上代码,看看我的问题,以后要少犯类似 ...
最新文章
- Node.js和C++有关的博文链接
- php分页类 seo,HTML_写一个对搜索引擎友好的文章SEO分页类,使用jsp/php/asp等动态程序生成 - phpStudy...
- tensorflow笔记:模型的保存与训练过程可视化
- 利用memcached实现CAS单点登录集群部署
- Redis 压缩列表原理与应用分析
- uiautomatorviewer 查看元素新思路
- 赋能10000家合作伙伴! | 凌云时刻
- 基于深度学习的AI疲劳检测系统
- c语言智能车跑道检测程序,基于金属检测的智能循迹小车设计
- 在Hisi3531环境中为wm8978芯片添加音量调节功能及测试
- ArcGIS | 02小技巧-三调地类转换
- Nlite后期处理技术小结
- windows下装ipython
- 武汉大学 计算机学院 曹瑀,武大计算机青协
- Java学习者常用软件与学习网站
- 计算机软件著作权登记的申请流程是什么
- PB数据窗口9种风格
- GIS中的栅格分析工具和技术
- 字节跳动技术支持面试小记
- 3070网卡支持linux,RT3070网卡AP模式网速问题