简述一下今天遇到的问题:
在我的代码里面有如下代码段:

<?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函数的一个坑相关推荐

  1. 2 560.26 php,php rtrim的一个坑,很“二”的问题

    一.背景: 做项目的时候遇到一种情况,商家的营业时间显示的问题,设计图上要求显示成:"星期一,星期二,星期三,星期四,星期五,星期六,星期天" 换句话说,就是营业星期勾哪个就显示哪 ...

  2. linux编译动态库未定义,GCC链接库的一个坑:动态库存在却提示未定义动态库的函数...

    背景 在GCC中已经指定链接库,然而编译时却提示动态库函数未定义! 测试出现的错误提示如下: [GMPY@13:48 tmp]$gcc -o test -L. -lmylib test.c /tmp/ ...

  3. 写一个rtrim()函数消除字符串后面的空格字符。编main函数调用测试它。

    写一个rtrim()函数消除字符串后面的空格字符.编main函数调用测试它. **提示信息:"请输入一个字符串:" **输出格式要求:"去掉右边的空格后为%s!\n&qu ...

  4. vue组件双向绑定.sync修饰符的一个坑

    我们知道组件是单项的,但是有时候需要双向,这时候我们可以使用.sync修饰符,但今天遇到一个坑,一直不成功,花了半小时试出来的.... 在编程的时候我们很习惯冒号后面跟着空格.而.sync双向绑定需要 ...

  5. PHP两文件嵌套循环引用,php的循环与引用的一个坑,php循环引用_PHP教程

    php的循环与引用的一个坑,php循环引用 上代码 $arr = array('a'=> 'a11', 'b'=> 'b22', 'c'=> 'c33',);foreach ($ar ...

  6. 微信网页开发wx.getLocation在安卓手机上的一个坑

    我在wx.getLocation的成功回调函数里,执行了一句 this.lon = res.longitude.toFixed(6) 在苹果手机和调试工具上都是能获取到数据的,但是在安卓手机上this ...

  7. 关于Openlayers Overlay事件监听的一个坑

    一.问题产生: 我使用Overlay创建标绘操作的小方块元素,如下代码和如图. 然后我监听小方块的mousedown事件.用原始的事件监听: element.addEventListener('mou ...

  8. Oracle 你真的会用ltrim/rtrim函数吗?

    查看原文:http://www.ibloger.net/article/255.html 常见的用法是去除空格,有多少人不知道它们其实还可以做到去除空格,它有ltrim().ltrim(x,y)方法 ...

  9. 浅谈对象数据赋值问题---我遇到的一个坑

    今天在做一个大型网站表格导入的时候,我踩了一个坑,让宝宝我好忧伤,感觉智商的倒退 看到这个数据重复的问题,还以为我没错,结果狠狠打脸啊,伤心的不要不要的 话不多说,上代码,看看我的问题,以后要少犯类似 ...

最新文章

  1. Node.js和C++有关的博文链接
  2. php分页类 seo,HTML_写一个对搜索引擎友好的文章SEO分页类,使用jsp/php/asp等动态程序生成 - phpStudy...
  3. tensorflow笔记:模型的保存与训练过程可视化
  4. 利用memcached实现CAS单点登录集群部署
  5. Redis 压缩列表原理与应用分析
  6. uiautomatorviewer 查看元素新思路
  7. 赋能10000家合作伙伴! | 凌云时刻
  8. 基于深度学习的AI疲劳检测系统
  9. c语言智能车跑道检测程序,基于金属检测的智能循迹小车设计
  10. 在Hisi3531环境中为wm8978芯片添加音量调节功能及测试
  11. ArcGIS | 02小技巧-三调地类转换
  12. Nlite后期处理技术小结
  13. windows下装ipython
  14. 武汉大学 计算机学院 曹瑀,武大计算机青协
  15. Java学习者常用软件与学习网站
  16. 计算机软件著作权登记的申请流程是什么
  17. PB数据窗口9种风格
  18. GIS中的栅格分析工具和技术
  19. 字节跳动技术支持面试小记
  20. 3070网卡支持linux,RT3070网卡AP模式网速问题

热门文章

  1. 微信小程序知识点汇总---更新中
  2. 采集软件:自媒体必备神器,你掌握了吗?
  3. printf函数(格式输出函数)
  4. centos8镜像安装网址
  5. Delaunay三角化
  6. linux 解除文件root权限限制
  7. 跳过twitch从curseforge下载整合包
  8. 浅析web api的json参数校验
  9. iOS14中点击SwiftUI列表项导航跳转返回后外观呈灰色的解决
  10. 什么是圣杯什么是双飞翼