cmd的字符集

时间:2011-09-27 05:36:57

标签: php character-encoding cmd

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

C:\Users\Kolink>echo é
é

正如您所看到的,输出é的程序会产生Ú,但使用echo命令会产生所需的字符。

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

1 个答案:

答案 0 :(得分:3)

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 sp 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

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