php 使用 strrev() 函数可以反转字符串,但中文乱码是因为该函数按字节操作而非字符。要正确反转包含中文的字符串,需先使用 mb_convert_encoding 将 utf-8 转为 ucs-2 或 ucs-4 编码,反转后再转回 utf-8。

为什么 strrev() 会导致中文乱码?
因为 strrev() 是单字节操作函数,它会将多字节的 UTF-8 中文字符拆散,导致解码错误。例如“你好”会被拆成多个字节并重新排列,产生乱码。

$str = "你好"; $reversed = strrev($str); echo $reversed; // 输出乱码
如何正确使用 mb_convert_encoding 解决乱码?
通过先将 UTF-8 字符串转换为 UCS-2 编码,再调用 strrev() 反转,最后转回 UTF-8,即可实现中文正确反转。

$str = "你好"; $ucs2 = mb_convert_encoding($str, "UCS-2", "UTF-8"); $reversed = strrev($ucs2); $result = mb_convert_encoding($reversed, "UTF-8", "UCS-2"); echo $result; // 输出:好你
基于输入“测试”的具体问题
当输入为“测试”时,直接使用 strrev() 会返回乱码,而使用 mb_convert_encoding 方法则能正确输出“试测”。这是因为 UCS-2 编码下每个汉字占两个字节,反转后仍保持完整字符结构。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











