CMD的字符集

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

C:\Users\Kolink>echo é
é

从上面可以看到,一个输出 é 的程序结果是 Ú,但使用 echo 命令可以得到所期望的字符。

那么,我能否在 PHP 中进行配置(可能是一些脚本开头的命令),以输出正确的字符呢?


嗯,echo似乎更像是一个复制/粘贴函数。我不确定PHP... - Caffeinated
1个回答

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

正如@Christophe Weis在评论中指出的那样,您可以在“代码页标识符”页面上查找其他代码页的标识符。 (链接)

1
谢谢,这非常有用!但是 ISO-* 代码页号对我没有起作用。在 代码页标识符 中指出 iso-8859-128591,而 ISO-8859-228592 - Christophe Weis
非常感谢!我已经纠正了我的答案,并添加了您找到的页面的超链接。 - MBu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接