我不知道如何告訴Iconv
將我的字符串轉碼爲可讀輸出。如何正確地將UTF8轉換爲cp1252(1.8.7)
示例:我正在將「拉丁文大寫字母與CARON」U+0160轉換爲Š
。
Iconv.conv('cp1252', 'UTF8', 'Š'
),但是返回"\212"
我希望它返回相當於CP1252字符,0x8A
,也呈現爲Š
。然而,打印結果仍然是"\212"
- 它是八進制表示(\212
是0x8A
或138
的八進制)。
我也嘗試了一些更具異國情調的編碼指令,如cp1252//IGNORE//TRANSLIT
,輸出相同。
我在做什麼錯,該怎麼辦?
謝謝
編輯
卡斯帕爾說,控制檯輸出應正確顯示的字符,但它沒有。也許我只是不知道如何設置它來接受cp1252。
如果有人能告訴我怎麼做,我將不勝感激 - 我工作的Ubuntu 13.04,並都與IRB和的RubyMine的內置控制檯顯示器的輸出作爲"\212"
的locale
輸出正規的bash是所有值的en_US.UTF8
。
Iconv.conv('cp1252', 'UTF8', 'Š').inspect
打印"\"\\212\""
Iconv.conv('cp1252', 'UTF8', 'Š').each_byte { |b| p b }
打印138
和"\212"
聽起來對我來說是正確的。 'puts「\ 212」'應該輸出你需要什麼時候你的終端配置爲cp1252? – Casper
卡斯帕是正確的 - 你必須從Ruby獲取字符串到知道如何正確顯示它的設備。 Ruby不會爲你呈現字形,如果有疑問,「irb」或「inspect」會輸出轉義的八進制,所以你至少可以清楚地看到字符串中的內容。 –
@Casper這就是我所期望的,但是我的字面意思是「\ 212」,這就是我問的原因。請參閱編輯。 – kostja