You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中JSON列UTF-8重音字符显示异常问题求助

JSON列UTF-8重音字符显示异常解决办法

问题描述

从JSON列properties中获取数据时,UTF-8重音字符显示异常,实际输出为"type_nen": "Emiss\u00e3o",期望正常显示为"type_nen": "Emissão"。相关存储代码如下:

public function store(HunterRequest $request)
{
    $validations = $request->validated();
    $validations['properties'] = $validations;
    HunterModel::create($validations);
    return redirect('/')->with('success_store','Hunter are registered in the system.');   
}

解决方案

1. 检查数据库与模型配置

  • 确保数据库连接字符集设置正确(以Laravel为例,修改.env文件):
    DB_CHARSET=utf8mb4
    DB_COLLATION=utf8mb4_unicode_ci
    
  • 确认模型中properties字段已正确设置JSON类型转换:
    protected $casts = [
        'properties' => 'json',
    ];
    
    Laravel的JSON字段转换会自动处理UTF-8字符,无需手动转义。

2. 手动控制JSON编码(若自动转换失效)

如果自动转换未生效,可在存储时手动指定编码选项,避免转义UTF-8字符:

public function store(HunterRequest $request)
{
    $validations = $request->validated();
    // 使用JSON_UNESCAPED_UNICODE确保重音字符不被转义
    $validations['properties'] = json_encode($validations, JSON_UNESCAPED_UNICODE);
    HunterModel::create($validations);
    return redirect('/')->with('success_store','Hunter已在系统中注册。');   
}

3. 读取数据时解码处理

若读取数据时仍显示转义字符,可在获取后手动解码:

$hunter = HunterModel::find($id);
$properties = json_decode($hunter->properties, true, 512, JSON_UNESCAPED_UNICODE);

内容的提问来源于stack exchange,提问作者user20509677

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:40:32