在Windows使用curl post發送中文資料

 為了測試RESTful API的功能,我在windows的cmd視窗用crul指令來測試,但是出現ORA-40441:JSON syntax error



指令:curl -i -H 'Content-type:application/json' -X POST -d  '{"name":"愛因斯坦","job":"科學家"}' http://192.192.192.10/test

接著找了一台Linux的機器,用curl來測試上述的指令,結果是成功的。



所以問題只出現在windows底下,經查詢一些論壇之後,依一些如下的方案測試:

1、因為cmd的限制,所以將單引號換成雙引號,並加上跳脫符號「\」

指令:curl -i -H "Content-type: application/json" -X POST -d "{\"name\":\"愛因斯坦\",\"job\":\"科學家\"}" http://192.192.192.10/test

結果是ORA-40441: JSON syntax error


2、將中文改為英文測試

curl -i -H "Content-type: application/json" -X POST -d "{\"name\":\"john\",\"job\":\"student\"}" http://192.192.192.10/test

結果成功了,因此解決了cmd的問題,再來就剩下中文字的問題。


3、因為windows預設是big5,所以post上去的資料會變成亂碼,導致錯誤,將json存成文字檔,如test.json,再執行下列指令讀取文字檔 

curl -i -H "Content-type: application/json" -X POST -d @test.json http://192.192.192.10:8587/ords/ords_test/demo02/plsql01

這次就成功了。


總結,當在windows系統用cmd視窗做curl測試時,要注意兩件事:

1、一律只能用雙引號,並加上跳脫符號

2、中文字只能存以文字檔,再用curl讀取文字檔來上傳資料