2017-01-02 12 views
0

curlからREST APIを使用してサービスに送信していますが、なぜサーバーが特殊文字ÆØÅを受信して​​いないのかわかりません。特殊文字ÆØÅが正しく受信されないcurlで

私はCMDのカールからそれをやっているときに、サーバはデンマークの文字を正しく受け取っていません。

ブラウザを使用しているときに、StrongLoop APIを使用すると、文字が正しく挿入されます。

私が研究することができる限り、私は定義された文字セットが必要です。しかし、これは効果がありません。 chcp 65001とLucida Consoleフォントを使用しても役に立ちません。私は少し問題を特定することが失われています。

これはコマンドである。

curl -X POST -H "Content-Type: application/json; charset=UTF-8" -H "Accept: application/json" -d "{ \"metadata\": { \"user\": \"aa\", \"version\": \"ED\", \"transaction_date\": \"2016-12-30\", \"context_info\": \"string\" }, \"container\": { \"type\": \"SC\", \"type_source\": \"string\", \"op_status_source\": \"string\", \"identification\": \"øæå\", \"id_source\": \"876332d2321\", \"ver\": 0 }}" "http://xx.com/xx/containers?access_token=xxx 

応答:

{"type":"SC","type_source":"string","op_status_source":"string","identification":"���","id_source":"8763wwd32d2321","ver":1} 

æøåは、「∩┐╜∩┐╜∩┐╜こと、または同様、依存しますかCHCPに。

また、コンソールが応答正しくæøå表示しませんが、注意してください。

+0

'-d'の代わりに' --data-binary'を試してみてください。 (オプションの名前に「バイナリ」があるにもかかわらず、バイナリデータではなく、データがそのまま送信されることを保証します) – sideshowbarker

+1

'CMD'の文字セットとは何ですか? *これは 'curl'への引数の文字セット、つまりデータであるため、指定する文字セットです。コマンドライン引数の代わりにファイルを使用してデータを提供する場合、ファイルのエンコーディングを制御してUTF-8にすることができます。 'CMD'コードページを表示するには、コマンド' mode'を実行します。私は['コードページ:437']と言っています(https://en.wikipedia.org/wiki/Code_page_437)。 – Andreas

+1

'CMD'をUTF-8に変更するには、[WindowsコマンドラインでのUnicode文字列 - how?](http://stackoverflow.com/q/388490/5221149)を参照してください。あなたの質問をその重複として閉じるために投票します。 --- Godtnytår;-) – Andreas

答えて

0

デンマーク語の文字を持つjsonをtest.jsonというファイルに入れて、これを動作させることができました。私は、jsonファイルがutf-8として保存されていることを確認しました。私はメモ帳でファイルを開いて「名前を付けて保存」を使用し、utf-8エンコーディングをファイルエンコーディングとして選択しました。 curlコマンドを含むbatファイルの上部に

、私はCHCP 65001

curl.exe -X PUT --header "Content-Type: application/json; charset=UTF-8" --header "Accept: application/json" -s -d @test.json "<theUrl>" 

を入れて、私はものの、カールは、私は(身体を書い失敗)になっていたエラーに関する静かに行かせるために-sを追加しましたデータベース内のレコードを更新するコマンドが正常に実行されたように見えます。

関連する問題