【问题标题】:How to print this string properly in Perl?如何在 Perl 中正确打印此字符串?
【发布时间】:2012-02-27 06:46:25
【问题描述】:

我想打印出这个字符串:

[2/16/2012] emailed...I honestly do not know - I am an endpoint in sales - I would try contacting our corporate office. <STOP>

当我尝试打印这个字符串时,它在终端中是这样的:

[2/16/2012] emailed...I honestly do not know û I am an endpoint in sales û I would try contacting our corporate office. <STOP>

如何让终端打印“-”字符而不是“û”字符?

【问题讨论】:

    标签: perl


    【解决方案1】:

    终端正在尝试使用 OEM 代码页(通常为 437 或 850),其中字符 151 确实是 ù。你需要做两件事:

    1. 将控制台更改为使用 Unicode 字体,而不是光栅字体(始终使用 OEM 代码页)
    2. 将代码页更改为(比如)1252

    【讨论】:

    • 在 DOS 终端上,我只能选择 Lucida 字体而不是 Raster 字体。似乎没有更改代码页的选项。我该怎么做?
    【解决方案2】:

    您可以尝试通过以下方式更改 STDOUT 的编码:

    use encoding 'utf8', STDOUT => 'cp850'; # or 'cp1252', change to what your terminal needs
    

    您使用什么系统,设置了什么语言环境?您也可以从 use encoding 'utf8'; 开始。

    另一种方法是用简单的破折号替换这些讨厌的字符。有很多方法可以做到,$string_to_print =~ tr/$pesky_character/-/ 可能是最好的。

    【讨论】:

    • 我试过这个(cp850 和 cp1252),我得到这个错误:“\x{fffd}”不映射到 cp1252
    猜你喜欢
    • 2011-05-05
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 2011-03-18
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多