Работа с кодировкой в ​​ruby - PullRequest
0 голосов
/ 15 июля 2011

Я делаю простое веб-приложение на основе синатры для отображения китайского текста, и я знаю достаточно о кодировании, чтобы знать, что я могу потерять информацию, если я не сделаю это правильно, но я чувствую себя немного потерянным в пространствекодирования.Это также первый раз, когда я работаю с неанглийским текстом в ruby.

Есть ли какие-то области, в которых я должен быть осторожен в моем стеке программирования?Также есть ли дополнительные библиотеки, о которых я должен знать, чтобы обеспечить правильное кодирование / декодирование?

Мой стек программирования в настоящее время состоит из:

  • ruby ​​1.9.2
  • sinatra1.2.6
  • возможно postgresql
  • редактор текстовых файлов (в настоящее время установлен на кодировку UTF8) - мне нужно изменить здесь свою кодировку?

Ответы [ 3 ]

1 голос
/ 15 июля 2011

Лучший пост, который я прочитал о реализации ruby ​​charset, был написан одним из ребят, стоящих за большей частью кода:

http://yokolet.blogspot.com/2009/07/design-and-implementation-of-ruby-m17n.html

Я столкнулся с ним, глядяв поддержку ICU в ruby:

http://redmine.ruby -lang.org / Issues / 2034

1 голос
/ 15 июля 2011

Ruby очень хорошо работает с кодировкой UTF8, поэтому у вас не должно быть проблем с ним.

Но в некоторых случаях вы должны использовать магический комментарий #encoding: UTF-8 в начале ваших файлов.

Вы можете прочитать это http://blog.grayproductions.net/articles/understanding_m17n, чтобы понять кодировку в Ruby.

0 голосов
/ 15 июля 2011

Я уже несколько месяцев скребу по китайским иероглифам на http://sinograms.com. Я использую rails3, ruby ​​1.9.2 и heroku.

Я не нашел проблем с кодировкой, однако яПринимаю только символы Юникода.UTF - это то же самое, что и Unicode, за исключением того, что он обратно совместим с ASCII, поэтому, если вы будете придерживаться этого, вы должны найти.

Это лучший ресурс, который я нашел для ruby ​​и кодировки:

http://blog.grayproductions.net/articles/ruby_19s_string

Вы можете проверить, является ли китайский символ Unicode, с помощью следующего скрипта:

 def check(char)
   char = char.unpack('U*').first
   if char >= 0x4E00 && char <= 0x9FFF
     return true
   end
   if char >= 0x3400 && char <= 0x4DBF
     return true
   end
   if char >= 0x20000 && char <= 0x2A6DF
     return true
   end
   if char >= 0x2A700 && char <= 0x2B73F
     return true
   end
   return false
 end
...