2012-03-05 15 views
0

私はちょうど(レールコンソールからそれをテストする)は、次のようなロシア語の文字でgeokit宝石を使用したい:のRails:geokit "互換性のない文字エンコーディング:UTF-8およびASCII-8BIT"

Geokit::Geocoders::GoogleGeocoder.geocode 'минск' 

しかし、次を得ますエラー:

Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT 
     from /usr/share/ruby-rvm/gems/ruby-1.9.3-p125/gems/geokit-1.6.5/lib/geokit/geocoders.rb:464:in `do_geocode' 
     from /usr/share/ruby-rvm/gems/ruby-1.9.3-p125/gems/geokit-1.6.5/lib/geokit/geocoders.rb:129:in `geocode' 
     from (irb):16 
     from /usr/share/ruby-rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.1/lib/rails/commands/console.rb:47:in `start' 
     from /usr/share/ruby-rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.1/lib/rails/commands/console.rb:8:in `start' 
     from /usr/share/ruby-rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.1/lib/rails/commands.rb:41:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>' 

次の可能な解決策は役に立ちません。

Geokit::Geocoders::GoogleGeocoder.geocode 'минск'.force_encoding('UTF-8') 
Geokit::Geocoders::GoogleGeocoder.geocode(CGI.escape('Минск')) 

#in config/environment.rb 
Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 

に何を助けることができます この問題を解決します? google-places gemと同じ問題があります。

答えて

2

ここでの問題はロガーです。このラインで

https://github.com/imajes/geokit-gem/blob/master/lib/geokit/services/google3.rb#L49

それはUTF-8 address文字列とASCII json応答に参加します。修正するには、この行の直前に次のコードを追加します。

json.force_encoding('utf-8') if json.respond_to?(:force_encoding) 

これを実行してプルリクエストを送信できます。 Nominatimジオコーダーについても同じことをしました。

関連する問題