如何在 UTF-8 中通过 http post 发送字符串

Posted

技术标签:

【中文标题】如何在 UTF-8 中通过 http post 发送字符串【英文标题】:how to send string by http post in UTF-8 【发布时间】:2013-03-10 12:04:46 【问题描述】:

我尝试发送字符串“Привет мир!”

String link = POST_URL;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(link);
String xml ="Привет мир";
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("file", xml));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);

并通过php脚本保存:

if(!empty($_REQUEST['file']))
$fp = fopen("C:\\windows\\temp\\1.xml", "w");
$mytext =$_POST["file"];
$test = fwrite($fp, $mytext); 
fclose($fp); 

但我明白了?????? ???在我的网络服务器上,我尝试使用 utf 编码重新打开文件,但它没有帮助。我该如何解决它。

【问题讨论】:

UrlEncodedFormEntity 默认使用不支持俄语字符的ISO 8859-1 编码。您可以在UrlEncodedFormEntity 的构造函数中指定编码。 new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8) 非常感谢 :) @vmironov 【参考方案1】:

StringEntity 的字符集为 UTF-8。这些行可以解决问题:

 httpPost.setEntity(new StringEntity(body, HTTP.UTF_8));

【讨论】:

它已经被弃用了。请改用StandardCharsets.UTF_8【参考方案2】:

这对我有用:

HttpPost httpPost = new HttpPost("http://someurl.com");
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair, HTTP.UTF_8));

【讨论】:

以上是关于如何在 UTF-8 中通过 http post 发送字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt5 中通过 http 连接到 PUSH 服务器

使用请求(不是 GET)在 Python 中通过 Post HTTP Request 下载 PDF

如何在 moya 中通过 POST 请求传递 JSON 正文

如何在 Vuex 中通过 POST 请求发送状态数据?

如何在浏览器中通过 POST 请求加载外国图像?

在 WCF REST 服务中通过 POST 发送参数的正确 URI 是啥?