2012-01-09 9 views
3
私は、英語からロシア語への簡単な単語を翻訳するために、以下の方法を使用してい

呼び出すことで、 JSON出力:ルビーマイクロソフト翻訳予期しないトークンエラー

{"From":"en","Translations":[{"Count":0,"MatchDegree":100,"MatchedOriginalText":"","Rating":5,"TranslatedText":"Привет"}]} 

エラー:

unexpected token at '{"From":"en","Translations":[{"Count":0,"MatchDegree":100,"MatchedOriginalText":"","Rating":5,"TranslatedText":"Привет"}]}' 

意味が分かりませんunexpected token。それが私が受けている唯一のエラーです。残念ながら、JSON出力はAPI自体から返されるため、変更できません。

UPDATE:

は、いくつかの不正な文字(悪いMicrosoft)を返すAPIのようになります。

'´╗┐{"From":"en","Translations":[{"Count":0,"MatchDegree":0,"Matched OriginalText":"","Rating":5,"TranslatedText":"Hello"}]}' 

全エラー:

C:/Ruby193/lib/ruby/1.9.1/json/common.rb:148:in `parse': 743: unexpected token at '´╗┐{"From":"en","Translations":[{"Count":0,"MatchDegree":0,"Matched 
OriginalText":"","Rating":5,"TranslatedText":"Hello"}]}' (JSON::ParserError) 
     from C:/Ruby193/lib/ruby/1.9.1/json/common.rb:148:in `parse' 
     from trans.rb:13:in `translate' 
     from trans.rb:17:in `<main>' 
+0

これはRailsの質問はありませんが、それはどちらかのAPIまたは翻訳の問題のようには見えません。エラーが発生した行に関する情報を渡すことはありませんでした。それはJSONのラインですか?問題を最小限に抑えて、問題のタグを付け直してください。 –

+0

@マークトーマス得点。オリジナルの質問が更新されました。 – fuzz

+0

@Fulvioそれは完全なエラーメッセージですか? – Dogbert

答えて

1

UTF-8エンコーディングを確保してみてください文字列の先頭にあるBOM標識をすべて取り除く:

# encoding: UTF-8 
# ^-- Make sure this is on the first line! 

def translate(text) 
    begin 
    uri = "http://api.microsofttranslator.com/V2/Ajax.svc/GetTranslations?appId=#{@appid}&text=#{text.strip}&from=en&to=ru&maxTranslations=1" 
    page = HTTParty.get(uri).body 
    page.force_encoding("UTF-8").gsub!("\xEF\xBB\xBF", '') 
    show_info = JSON.parse(page) # this line throws the error 
    rescue 
     puts $! 
    end 
end 

出典:

+0

あなたは男です!これで問題は解決しました。 – fuzz

関連する問題