You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

  1. 运行php --ini查看CLI加载的配置文件路径
  2. 打开对应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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:42:41