2012-02-26 47 views
1

我想打印出这个字符串:如何在Perl中正确打印此字符串?

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

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

回答

2

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

  1. 更改使用Unicode字体的控制台,而不是光栅字体(它总是使用OEM代码页)
  2. 更改代码页(比如说)1252
+0

在DOS终端上,我只能选择Lucida字体而不是Raster字体。似乎没有更改代码页的选项。我该怎么做呢? – Andrew 2012-02-26 21:48:46

+0

@Andrew'CHCP'命令更改代码页。 – Neil 2012-02-26 22:01:15

0

您可以尝试改变STDOUT的编码,通过这样的:

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

什么区域设置是什么系统,你使用,并?您也可以从use encoding 'utf8';开始。

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

+0

我试过(cp850和cp1252),我得到这个错误:“\ x {fffd}”没有映射到cp1252 – Andrew 2012-02-26 22:19:48