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の新機能です。
また、この質問の名前を変更することを検討してください。多分私はいくつかの用語を誤用しています。