为什么Windows10终端的默认编码是CP850?
Why is CP850 the default encoding in Windows 10 terminal?
我正在开发一个 Ruby 程序,我最终发现问题是由 Windows 10 终端中的默认编码引起的,这显然是 CP850,这种编码太旧了' 甚至包括 € 符号。我读到,当然,如果我尝试更改此计算机周围的其他程序会出现问题。
Wikipedia 表明 CP850 理论上已被 Windows-1252 和后来的 Unicode“很大程度上取代”,但它就在这里,就在 OS 的终端中。
附上图片为证。它是意大利语,但您会在“Tabella codici corrente”下看到它,又名“当前代码 table”。
这怎么可能?
这是历史。
DOS 将 cp437 和后来的 cp850(例如还有 cp852)作为标准代码页。
Windows 中的终端也被称为“DOS 提示符”:运行 Windows 中的 DOS 程序的一种方式,因此它们保留 DOS 的代码页。 Microsoft 不喜欢非向后兼容的更改,因此您的 DOS 程序应该也可以在 Windows 终端上正常运行。
Windows-1252,顾名思义,是为Windows做的,所以没有兼容性问题,也是为Windows程序做的,不过如此,为了获得图形界面市场,但保持与许多业务应用程序的兼容性,Microsoft 维护了两个不同的代码页。
我正在开发一个 Ruby 程序,我最终发现问题是由 Windows 10 终端中的默认编码引起的,这显然是 CP850,这种编码太旧了' 甚至包括 € 符号。我读到,当然,如果我尝试更改此计算机周围的其他程序会出现问题。
Wikipedia 表明 CP850 理论上已被 Windows-1252 和后来的 Unicode“很大程度上取代”,但它就在这里,就在 OS 的终端中。
附上图片为证。它是意大利语,但您会在“Tabella codici corrente”下看到它,又名“当前代码 table”。
这怎么可能?
这是历史。
DOS 将 cp437 和后来的 cp850(例如还有 cp852)作为标准代码页。
Windows 中的终端也被称为“DOS 提示符”:运行 Windows 中的 DOS 程序的一种方式,因此它们保留 DOS 的代码页。 Microsoft 不喜欢非向后兼容的更改,因此您的 DOS 程序应该也可以在 Windows 终端上正常运行。
Windows-1252,顾名思义,是为Windows做的,所以没有兼容性问题,也是为Windows程序做的,不过如此,为了获得图形界面市场,但保持与许多业务应用程序的兼容性,Microsoft 维护了两个不同的代码页。