PHP UTF-8到Windows命令行编码

Oli*_*ons 12 php windows command-line cmd character-encoding

一切都在问题:我有一个UTF-8文件的Php脚本.在这个脚本中我想这样做:

  <?
  echo "âêïû\n";
  ?>
Run Code Online (Sandbox Code Playgroud)

如果我在Windows提示符下运行它,我得到这个:

C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php
?ó?¬?»??
C:\php>
Run Code Online (Sandbox Code Playgroud)

我找不到合适的转换方案.我也试过这段代码:

$tab = mb_list_encodings();
foreach ($tab as $enc1) {
  foreach ($tab as $enc2) {
    $t=mb_convert_encoding("âêïû\n", $enc1, $enc2);
    if (strlen($t)<14) {
      echo $enc1." ".$enc2." = ".$t."\n";
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我找不到合适的转换!

任何帮助将不胜感激

Dou*_* T. 18

问题是Windows cmd行默认情况下不支持UTF8.从这个链接,如果你按照这些

  1. 打开命令提示符窗口
  2. 更改窗口的属性以使用默认光栅字体以外的内容.他Lucida控制台True Type字体似乎运作良好.
  3. 从命令提示符运行"chcp 65001"

你应该能够输出utf8.

  • 请注意,Windows命令行的默认字符集是**NOT**ISO-8859-1,而是Windows-1252(至少对于Latin1/Western Europe). (2认同)

Oli*_*ons 7

你把我放在正确的轨道上,但有一个问题(我喜欢Windows\o /):

C:\php>chcp 65001
Page de codes active : 65001
C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php | more
Mémoire insuffisante.
Run Code Online (Sandbox Code Playgroud)

Mémoireinsuffisante=记忆力不足.

如果我试试

C:\php>chcp 1252
C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php
C:\php>ééîîïïÂÂÂÂâûü
Run Code Online (Sandbox Code Playgroud)

有用.只有上帝知道为什么.但它的确有效.谢谢你让我走上正轨!!

顺便说一句,PHP代码正确地形成UTF8到命令提示符是:

  echo mb_convert_encoding($utf8_string, "pass", "auto");
Run Code Online (Sandbox Code Playgroud)