2010-09-20 85 views
5

alt text如何在Perl中顯示擴展ASCII碼字符?

如何顯示192字符號(└)在Perl?

+8

192實際上並不是ASCII碼。 ASCII設置結束於128(或127,具體取決於你包含的內容)。 – 2010-09-20 15:43:09

+0

什麼是這個問題的完美標題? – Tree 2010-09-20 15:44:19

+3

如果要打印值爲192的字符,則需要告訴我們使用的是哪種字符編碼。它不是ASCII,因爲ASCII只定義了128個字符?你在使用其中一個擴展字符集嗎?也許cp1252或ISO-8859? – 2010-09-20 15:47:38

回答

11

你想要的是能夠打印unicode,答案在perldoc perluniintro

您可以使用\x{nnnn}其中n是十六進制標識符,或者你可以用名字做\N{...}

perl -E 'say "\x{2514}"; use charnames; say "\N{BOX DRAWINGS LIGHT UP AND RIGHT}"' 
+0

我已編輯的代碼示例與問題相關。如果你不同意,你可以很容易地撤銷這一點。 – daxim 2010-09-20 17:02:55

+0

@daxim:謝謝! – Daenyth 2010-09-20 17:04:24

5

看起來像437代碼頁編碼。 Perl可能只是輸出你給它的字節。你的終端可能期待UTF8。

因此,您需要將其解碼爲Unicode,然後使用UTF-8對其進行重新編碼。

編輯:正確的編碼。

+0

或者,更改您的終端設置。 :) – 2010-09-20 16:48:35

+4

不,它是IBM437。參見[IANA](http://www.iana.org/assignments/character-sets),[RFC 1345](http://datatracker.ietf.org/doc/rfc1345/),[en.Wikipedia](http ://en.wikipedia.org/wiki/IBM437)。 – daxim 2010-09-20 16:51:28

8

要正確使用這些代碼,您的終端必須支持Code Page 437,其中包含框架。或者,您可以使用帶有較少裝箱字符的衍生CP850。 這樣的拳擊角色也存在爲Unicode Block Elements。您想要在Perl中使用的字符被標記爲\N{U+2514}。更多細節在perlunicode

+0

'「\ x」「'也是。該語法在[perlop](http://p3rl.org/op#Quote-and-Quote-like-Operators)中解釋。 – daxim 2010-09-20 16:55:24

3

像往常一樣,Jon Skeet指出它:192代碼是在「extended ASCII」範圍內。我建議你按照@Douglas Leeder's advice,但我不確定www.LookupTables.com給你的編碼方式; ISO-8859-1認爲192映射到「 - 」,Mac OS Roman認爲它的「¿」。

+3

「擴展ASCII」是一系列編碼。問題之一是IBM437。參見[IANA](http://www.iana.org/assignments/character-sets),[RFC 1345](http://datatracker.ietf.org/doc/rfc1345/),[en.Wikipedia](http ://en.wikipedia.org/wiki/IBM437)。 – daxim 2010-09-20 16:52:38