PHP 7.0在CLI中输出Emoji及外文文本乱码的解决求助
解决PHP7.0 CLI在Windows终端显示Emoji/Unicode乱码的方法
方法1:脚本内强制设置多字节输出编码
PHP7.0 CLI默认未对UTF-8输出做适配,即使终端已设为UTF-8,也可能用系统ANSI编码输出。在脚本开头添加以下代码,强制绑定多字节编码处理:
<?php // 设置内部字符编码为UTF-8 mb_internal_encoding('UTF-8'); // 指定输出编码为UTF-8 mb_http_output('UTF-8'); // 启用多字节输出缓冲区处理 ob_start('mb_output_handler'); echo "🚀पीएचपी"; ?>
方法2:全局配置或命令行参数指定编码
临时生效(命令行)
运行脚本时直接传递编码参数:
php -d default_charset=UTF-8 -d mbstring.internal_encoding=UTF-8 your_script.php
永久生效(修改CLI版php.ini)
- 运行
php --ini查看CLI加载的配置文件路径 - 打开对应
php.ini,修改以下项:
default_charset = "UTF-8" mbstring.internal_encoding = UTF-8
方法3:手动强制转换输出编码
若上述方法无效,可通过编码转换触发PHP7.0的正确输出逻辑:
<?php $text = "🚀पीएचपी"; // 强制转换为UTF-8输出(看似重复,实则修复PHP7.0的编码检测bug) echo mb_convert_encoding($text, 'UTF-8', 'UTF-8'); ?>
补充说明
- 问题本质是PHP7.0对Windows CLI环境的UTF-8底层支持不完善,PHP8.2已修复该缺陷,因此高版本可正常输出。
- 确保终端配置正确:Windows Terminal需将默认编码设为UTF-8(设置→默认值→外观→编码→UTF-8),同时使用支持Emoji和印地语的字体(如Noto Sans)。
内容的提问来源于stack exchange,提问作者Aizzat Suhardi
相关产品推荐
相关产品推荐

