2016-04-06 3 views
0

Я хочу, чтобы открыть текстовый файл (test.txt), который содержит арабский текст (его кодировка CP850), а затем распечатать его содержимое STDOUT:Печать CP850 закодированной строки с Руби (IRB)

# coding : CP850 
STDOUT.set_encoding(Encoding::CP850); # not sure if it's necessary 
open('G:/test.txt',?r){|f| 
    f.read.each_char{|c| print c}; 
    # or puts f.read; 
} 
gets 

но он не печатает арабские символы, на выходе есть некоторые символы и случайные символы. Использование Ruby 2.2.3

+0

Можете добавить несколько примеров или примеров того, как выглядит файл. Возможно, вы можете сделать его образцом для скачивания где-нибудь? – spickermann

+0

Например: http://pastebin.com/fhE8Yx0Y –

+0

Я просто попробовал свой файл в IRB. 'string.split (" \ n "). each {| line | puts line} 'отлично выглядит на моей стороне. В моей настройке могут быть разные: я использую по умолчанию 'UTF8' (вместо' CP850', как и вы), и я скомпилировал Ruby с поддержкой Readline (см. Http://stackoverflow.com/a/37480112/2483313) , – spickermann

ответ

0

Измените кодировку файла на utf-8.

Я не знаю, как это делается в Ruby, но Django (Поздние с помощью Python 3), это:

open('filename.txt', w, 'utf-8) 

Если вы используете Python 2, это будет немного сложнее. Если это так, стоит обновить до 3 только потому, что это родной юникод и делает что-то с арабским намного проще.

Смежные вопросы