我有一个网站,允许世界各地的用户提交个人资料。在存储/检索/显示字符之间的某个地方,它们没有正确呈现。我不确定哪一步有问题,但这里是对正在发生的事情的分割。
当我通过 psql 命令行界面从我的 PostgreSQL 数据库执行 SELECT 时,我看到一些字符出现,例如以下字符,这让我相信它们正在正确保存:
- ’
- …
- 一个
但是,在我的网站上,我看到上述字符分别如下显示:
- 一个
- ……
- ¥
我曾尝试更改 header 中的编码,但没有成功,来自:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
到:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
我只是想了解一些关于任何 PHP 设置/函数、PostgreSQL 设置、HTML 字符集或任何其他我应该研究的信息,以确保所有内容都能正确显示给我的用户。
最佳答案
* �
* �
* å
此模式表示它们首先从 UTF-8
转换为 ISO-8859-1
,然后再次从 ISO-8859-1
到 UTF-8
。
首先,您的内容类型 header 没问题。保留它 UTF-8
。
从数据库查询数据和将输出发送到响应之间的代码逻辑中的某些部分错误地使用了 ISO-8859-1
。这包括从数据库查询数据的步骤。我会先从第一步开始。如果 pg_set_client_encoding
试试帮助:
pg_set_client_encoding($connection, 'UTF8');
描述了其他步骤here .希望这会有所帮助。
关于php - 网站上的字符编码有困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1725530/