cmd的字符集

Nie*_*sol 7 php cmd character-encoding

C:\Users\Kolink>php -r "echo 'é';"
Ú

C:\Users\Kolink>echo é
é
Run Code Online (Sandbox Code Playgroud)

如您所见,一个程序输出é结果a Ú,但使用该echo命令给出了所需的字符.

并且,我可以配置PHP(可能在脚本的开头有一些命令)来输出正确的字符吗?

MBu*_*MBu 6

CMD.exe 在与 PHP 不同的代码页中工作。顺便说一下,它也是与默认的 Windows 代码页不同的代码页。这是为了与旧的 MS-DOS 程序兼容。在我的国家,Windows 使用 Windows-1250,cmd.exe 使用 DOS Latin2。我想在英国这将分别是 Windows-1252 和 DOS Latin1。

要获得相同的结果,您必须在 PHP 和 cmd.exe 中使用相同的代码页。检查 PHP 使用的代码页并将 cmd.exe 设置为相同的代码页。为此,请使用以下命令:mode con cp select=<codepagenumber>chcp <codepagenumber>. 这将仅更改 cmd.exe 的当前实例的代码页。

以下是一些典型代码页及其编号的简短列表:

DOS Latin1    850
DOS Latin2    852
Windows-1250  1250
Windows-1252  1252
UTF-8         65001
ISO-8859-1    28591
ISO-8859-2    28592
Run Code Online (Sandbox Code Playgroud)

正如@Christophe Weis 在评论中指出的那样,您可以在代码页标识符页面查找其他代码页的标识符