0

geokit次のようなロシア語の文字でgemを使用したいだけです(Railsコンソールからテストしてください):

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私は宝石と同じ問題を抱えています。

4

1 に答える 1

2

ここでの問題はロガーです。

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

この行で、UTF-8address文字列と ASCIIjson応答を結合します。修正するには、この行の直前に次のコードを追加します。

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

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

于 2012-04-20T17:22:31.663 に答える