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

从数据库读取含罗马尼亚字符的JSON显示为问号的问题

解决罗马尼亚特殊字符显示为问号的问题

罗马尼亚特殊字符(Ă、Î、Ș、Ț、Â等)显示成问号,核心原因是编码不统一——从数据库连接、数据存储到页面输出的全流程,必须保持UTF-8(或更全面的utf8mb4)编码一致。以下是具体解决步骤:

  • 第一步:强制数据库连接使用UTF-8编码
    建立数据库连接后,立刻执行编码设置语句,确保PHP与数据库之间的传输编码统一。把这行代码放在SQL查询之前:

    // 面向对象写法
    $conn->set_charset('utf8mb4');
    // 或mysqli扩展过程式写法
    // mysqli_set_charset($conn, 'utf8mb4');
    

    注:utf8mb4比标准utf8支持更多特殊字符,更适合存储包含罗马尼亚语的内容。

  • 第二步:检查数据库、表及字段的编码
    确保存储JSON的form_submission表、data字段的编码为utf8mb4,排序规则可选择utf8mb4_romanian_ci(专门适配罗马尼亚语)或utf8mb4_unicode_ci。如果编码不对,可执行以下SQL修改:

    -- 修改表编码
    ALTER TABLE form_submission CHARACTER SET utf8mb4 COLLATE utf8mb4_romanian_ci;
    -- 修改data字段编码
    ALTER TABLE form_submission MODIFY COLUMN data TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_romanian_ci;
    
  • 第三步:提前设置页面响应编码
    把header('Content-Type: text/html; charset=utf-8');移到脚本最开头,避免因提前输出内容导致header设置失效:

    <?php
    header('Content-Type: text/html; charset=utf-8');
    // 后续是数据库连接、查询代码...
    
  • 第四步:优化JSON解码(可选)
    给json_decode加上JSON_UNESCAPED_UNICODE参数,确保特殊字符直接输出,无需转义:

    $data = json_decode($row["data"], true, 512, JSON_UNESCAPED_UNICODE);
    

修改后的完整PHP代码示例

<?php
// 提前设置页面编码
header('Content-Type: text/html; charset=utf-8');

// 此处替换为你的数据库连接代码
// $conn = new mysqli($servername, $username, $password, $dbname);

// 设置数据库连接编码
$conn->set_charset('utf8mb4');

$sql = "SELECT data FROM form_submission";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  echo "<table>";
  echo "<tr><th>Text 1</th><th>Text 2</th><th>Select List 1</th><th>Text 3</th><th>Text 4</th><th>Date 1</th><th>Email 1</th><th>Matrix 1 0</th><th>Matrix 1 1</th><th>Matrix 2 0</th><th>Matrix 2 1</th></tr>";

  while($row = $result->fetch_assoc()) {
    $data = json_decode($row["data"], true, 512, JSON_UNESCAPED_UNICODE);

    echo "<tr>";
    echo "<td>" . $data["text_1"] . "</td>";
    echo "<td>" . $data["text_2"] . "</td>";
    echo "<td>" . implode(", ", $data["selectlist_1"]) . "</td>";
    echo "<td>" . $data["text_3"] . "</td>";
    echo "<td>" . $data["text_4"] . "</td>";
    echo "<td>" . $data["date_1"] . "</td>";
    echo "<td>" . $data["email_1"] . "</td>";
    echo "<td>" . $data["matrix_1_0"] . "</td>";
    echo "<td>" . $data["matrix_1_1"] . "</td>";
    echo "<td>" . $data["matrix_2_0"] . "</td>";
    echo "<td>" . $data["matrix_2_1"] . "</td>";
    echo "</tr>";
  }

  echo "</table>";
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:25:32