当我在终端中运行包含<;?的脚本时;?php echo“?पीएचपी“;
,它显示垃圾字符,而不是表情符号和外来文本。
具体地说,它显示lectƒÜÇαñ,αñÇañÅαñ。
但是,运行包含<code>console.log(“?पीएचपी“)是否正确显示表情符号和外语文本为?पीएचपी代码>。
使用PHP时,如何正确地回显/打印表情符号和外来文本,使其在CLI中按预期显示?
关于如何解决这个问题并让PHP在终端中正确显示表情符号和unicode文本,有什么建议吗?
该场景已使用Windows终端(Powershell 7)、cmd和GitBash(MINGW64)终端进行了测试
在我的windows终端中运行chcp
会返回65001(即utf-8)。因此,终端本身被正确地配置为UTF-8。chcp
的参考:https://learn.microsoft.com/en-us/windows/win32/intl/code-page-identifiers?redirectedfrom=MSDN
最小可复制性示例:
- Run
chcp 65001
in Windows Terminal/cmd. - Run
chcp
again to make sure it returnsActive code page: 65001
. - Run the php script below(make sure
extension=mbstring
is enabled in php.ini):
<?php
$utf8_string = "?पीएचपी";
$detected_encoding = mb_detect_encoding($utf8_string);
echo "Detected encoding[$utf8_string]: " . $detected_encoding;
- I still got this displayed:
Detected encoding[🚀पीएचपी]: UTF-8