2012-02-26 46 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