gpt4 book ai didi

PHP json_encode 编码单词中的重音

转载 作者:行者123 更新时间:2023-11-29 02:15:26 24 4
gpt4 key购买 nike

<分区>

我使用的是 Opencart,虽然我基本上已经看过 google 上关于这个主题的所有帖子,但我无法弄清楚为什么数据库以非 utf8 编码保存带有重音符号的字母。

print_r($this->request->post);

返回:Array ( [pfa_status] => 1 [pfa_text] => 'Cobrança' );但是在应用 json_encode 之后它变成了:

{"pfa_status":"1","pfa_text":"Cobran\u00e7a"}

现在通过网络查看所有可能的解决方案:

  1. 我使用 <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
  2. 我试过 header('Content-type: text/plain; charset=utf-8');
  3. 我所有的文件都是 utf-8 without BOM 格式
  4. 我使用 $this->connection->set_charset("utf8");
  5. 我使用 $this->connection->query("SET NAMES 'UTF8'");
  6. 我在数据库中的字段,保存 json 的位置,具有排序规则 utf8_bin
  7. 当使用 json_decode 时,它​​仍然是错误的编码
  8. 尝试过 json_encode($this->request->post, JSON_UNESCAPED_UNICODE);

因此,每当我在解码后显示 pfa_text 的值时,它都会显示 Cobran\u00e7a 而不是 Cobrança

我错过了什么?


编辑 1:根据要求,这是我的代码,只是为了测试。

class ControllerPfa extends Controller
{
public function index()
{
if (($this->request->server['REQUEST_METHOD'] == 'POST'))
{
$value = json_encode($this->request->post, JSON_UNESCAPED_UNICODE);
print_r($value);

die();
}
}
}

所以输出是(注意它是完整的当前 $_POST 响应):

{"pfa_status":"1","pfa_sort_order":"","pfa":[{"payment_method":"cod","description":{"1":{"name":"Tax"},"3":{"name":"Cobran\u00e7a"},"4":{"name":"Cobran\u00e7a"}}}]}

编辑 2:我使用的是 PHP 7.0 版

enter image description here


EDIT 3:已解决,下面的函数允许将带有重音符号的单词完美地插入数据库中。

private function formatEncoding($value)
{
return preg_replace_callback('/\\\\u(\w{4})/', function ($matc)
{
return html_entity_decode('&#x' . $matc[1] . ';', ENT_COMPAT, 'UTF-8');
}, $value);
}

所以,我们所要做的就是调用 formatEncoding(json_encode($this->request->post));

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