【问题标题】:PHP: Special chars not shown correctlyPHP:特殊字符未正确显示
【发布时间】:2026-01-16 14:35:01
【问题描述】:

我有一个值(名称)存储在 pg 数据库中,该值是Müller。但是,例如,当我 var_dump('Müller'); 我得到输出时:MÃ1/4ller

我已经尝试设置header('Content-Type: text/html; charset=UTF-8'); 并且不行。

有趣的是,我没有在客户端遇到这个问题,名称显示正确,但是在服务器端,当分解名称的前三个字母而不是得到:

array(3) {
    [0] =>
    string(1) "M"
    [1] =>
    string(1) "ü"
    [2] =>
    string(1) "l"
}

我明白了:

array(3) {
    [0] =>
    string(1) "M"
    [1] =>
    string(1) "Ã"
    [2] =>
    string(1) "1/4"
}

我认为由于数据库正确存储了该值,那一定是 php 的问题,但经过相当多的谷歌搜索后无法弄清楚,所以也许我没有搜索正确的查询?

【问题讨论】:

  • 当你在 var_dumping 时,你是在 var_dumping 静态 Müller 还是 db 值 $row['column']?听起来您的数据库不是 UTF8。
  • @chris85 我都试过了。
  • string(1) "1/4" 真的吗?你确定你没有修改你的复制和粘贴吗?或者你真的在那里得到 3 个字符?
  • @Phil_1984_ 是的,抱歉,修改了,1/4 是一个字符(所以总共两个,包括上面带有波浪号的 A)。

标签: php encoding utf-8


【解决方案1】:

这取决于您的架构配置。

在使用 PHP 转储之前尝试utf8_decode()http://php.net/manual/fr/function.utf8-decode.php

您也可以使用utf8_encode() 将字符串编码回utf8

【讨论】: