/ / Чи можна використовувати символи Unicode з ruby ​​/ tk? - ruby, windows, unicode, т.к.

Чи можна використовувати Unicode символи з ruby ​​/ tk? - рубій, вікна, юнікод, тк

Я використовую Ruby 1.9.3 на Windows 7 з інтерфейсом Tk. У наступному простому прикладі, якщо натиснути кнопку, GUI поверне мені "??????" відображається рядок замість "привет". Чи можна повернути фактичну введену рядок unicode?

#!/usr/bin/env ruby
# coding:utf-8 vi:et:ts=2
require "tk"
TkRoot.new.tap { |o|
$edit = TkEntry.new( o ).tap { |o|
o.pack( :side => "left" )
o.insert( 0, "привет" )
}
TkButton.new( o, :text => "click me" ).tap { |o|
o.pack( :side => "left" )
o.bind( "1" ) {
##  In this place i want unicode, but got garbage :(
puts( $edit.get().encoding.name )
puts( $edit.get().inspect )
}
}
o.mainloop()
}

введіть опис зображення тут

Відповіді:

2 для відповіді № 1

Так що я перевірив у Windows і отримав його роботу. Рекомендую поставити це у верхній частині файлу:

#!/usr/bin/env ruby -Ku
require "tk"
# etc.

The # coding біт непотрібний; -Ku Прапор повідомляє Ruby про використання кодової сторінки Unicode. Хоча моє тестування на Mac не здається, ця проблема (або додавання -Ku або використовуючи # coding: utf-8 буде працювати), це дійсно відбувається в Windows. Я виконую ті ж версії, що й ви, саме в Parallels.

Крім того, ви можете видалити частину shebang і запустити файл за допомогою ruby -Ku test.rb

Оригінальна відповідь:
Так, хоча рішення, з яким я звик, буде використовувати utf-8 # coding: utf-8 у верхньому рядку вашого файлу, а Ruby містично перейде на обробку рядків у utf-8:

# coding: utf-8
require "tk"
TkRoot.new.tap { |o|
# etc.

Для подальшого читання, я пропоную це посилання який переходить до того, як Ruby думає про кодування.