【问题标题】:How do I POST form data with UTF-8 encoding by using curl?如何使用 curl 使用 UTF-8 编码发布表单数据?
【发布时间】:2012-09-19 06:27:44
【问题描述】:

我想在终端提示符上使用cURL POST(发送)一些表单数据到网络服务器。

这是我目前得到的:

curl --data-ascii "content=derinhält&date=asdf" http://myserverurl.com/api/v1/somemethod

问题是变音符号(“äöü”)被替换为“?”当我在服务器上收到 post 请求时。

我想我需要为 POST 请求使用 UTF-8 编码。

有人知道我是怎么做到的吗?

【问题讨论】:

  • 我不这么认为。您的评论是关于 GET 请求和 UTF-8 解码。我的问题是关于 POST 请求和 UTF-8 编码。
  • 向我们展示您在服务器上收到的 bin2hex($content) 值。
  • 64 65 72 69 6e 68 cc 3f 6c 74
  • 我也使用tcpdump查看请求:bcdeäöüabcde变成6263 6465 c3a4 c3b6 c3bc 6162 6364 65

标签: http post curl encoding webserver


【解决方案1】:

您可以在 POST 请求中使用 UTF-8,您只需在请求中指定字符集。

你应该使用这个请求:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" --data-ascii "content=derinhält&date=asdf" http://myserverurl.com/api/v1/somemethod

【讨论】:

  • 用非 URL 编码的内容指定“urlencoded”内容类型对我来说似乎是错误的。而是使用--data-urlencode,如果文本不是UTF-8 编码,你可以使用"content=$(echo -n "derinhält" | iconv -f ISO-8859-1 -t UTF-8)"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2013-07-07
  • 2012-07-03
  • 1970-01-01
  • 2018-03-29
  • 2021-03-22
  • 2018-01-27
相关资源
最近更新 更多