gpt4 book ai didi

php - 小花 3.2。 - 将 UTF-8 字符发布到外部站点

转载 作者:搜寻专家 更新时间:2023-10-31 21:16:24 26 4
gpt4 key购买 nike

我正在尝试将 UTF-8 字符(即德语口音)发布到外部站点。然而,当它到达那里时,它看起来像这样:

ö

而不是这个:

ö

如果我使用适当的 UTF-8 header 进行 var_dump(),我会看到应有的重音字母。

这是我在尝试 POST 时使用的代码:

$request = Request::factory($url)
->method(Request::POST)
->post($params)
->headers('Content-Disposition', 'form-data; name="postdata"')
->headers('Content-Type', 'text/plain; charset=UTF-8')
->headers('Content-Transfer-Encoding', '8bit');
$response = $request->execute();

基于此处的指南:http://kohanaframework.org/3.2/guide/kohana/requests#external-requests

接收 URL 是基于 Java Spring 构建的。我已经使用 JMeter 测试了发布过程。当发布 UTF-8 重音字符时,捕捉它们没有问题。上面 PHP 示例中的 header 使用与测试相同的设置。

这一定是 PHP 的问题,因为 JMeter 测试工作正常。

我还可以通过 JAVA 接收站点从数据库中提取带有重音符号的 UTF-8 字符到网站,然后通过 PHP/Kohana/HTML 并毫无问题地显示它们。

更多信息:

我发现如果我运行

utf8_encode('ö');
// returns ö

所以我想知道这是否发生在 POST 中。

最佳答案

经过大量尝试后,我发现以下代码可以工作:

$data = http_build_query($params);
$request = Request::factory($url)
->method(Request::POST)
->body($data)
->headers('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
$response = $request->execute();

这里的主要区别在于:

  • 现在使用 ->body($data) 代替 ->post($params)
  • Content-Type设置为application/x-www-form-urlencoded; charset=UTF-8
  • $data 变量是通过在原始 $params 数组上使用 http_build_query() 创建的

关于php - 小花 3.2。 - 将 UTF-8 字符发布到外部站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7728273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com