2016-08-26 5 views
0

Sinatraを使用するWebサーバーを作成しましたが、ここでいくつかのデータを渡そうとしています。私はコンバータとしてRetrofit(アンドロイド)とGsonを使って渡しています。これはキリル文字であることをJSON Sinatraを読むときに不正なエンコーディングを取得する

--> POST http://192.168.88.147:4567/payload HTTP/1.1 
Content-Type: application/json; charset=UTF-8 
Content-Length: 245 
[{"composition":"","name":"Чебурек с мясом","price":42,"type":"выпечка","weight":"100","mId":158},{"composition":"","name":"Ватрушка с картошкой","price":32,"type":"выпечка","weight":"100","mId":159}] 
--> END POST (245-byte body) 
<-- 200 OK http://192.168.88.147:4567/payload (164ms) 
Content-Type: text/html;charset=utf-8 
Content-Length: 448 
X-XSS-Protection: 1; mode=block 
X-Content-Type-Options: nosniff 
X-Frame-Options: SAMEORIGIN 
Connection: keep-alive 
D/OkHttp: Server: thin 
D/OkHttp: OkHttp-Sent-Millis: 1472197883936 
OkHttp-Received-Millis: 1472197884075 
[{"composition"=>"", "name"=>"\u0427\u0435\u0431\u0443\u0440\u0435\u043A \u0441 \u043C\u044F\u0441\u043E\u043C", "price"=>42, "type"=>"\u0432\u044B\u043F\u0435\u0447\u043A\u0430", "weight"=>"100", "mId"=>158}, {"composition"=>"", "name"=>"\u0412\u0430\u0442\u0440\u0443\u0448\u043A\u0430 \u0441 \u043A\u0430\u0440\u0442\u043E\u0448\u043A\u043E\u0439", "price"=>32, "type"=>"\u0432\u044B\u043F\u0435\u0447\u043A\u0430", "weight"=>"100", "mId"=>159}] 
<-- END HTTP (448-byte body) 

ご注意:ここに

はlogcatのログです。ここで

は、私がこれをやっているどのようにRubyのサーバーサイドコードです:

post '/payload' do 
    push = JSON.parse(request.body.read) 
    push.inspect.force_encoding("UTF-8") 
end 

私はいくつかのサードパーティのオンラインデコーダを使用し、それがこの読めないテキストがUTF16であると述べました。

ここで何が起こっているのか調べてください。 Rubyの新機能です。

また、この質問の名前を変更することを検討してください。多分私はいくつかの用語を誤用しています。

答えて

0

Windows 7が問題でした。私がUbuntu(バーチャルボックス)に切り替えるとすぐに、エンコードとデコードの操作を正しく行うことができます。

関連する問題