utf-8 特殊字符不显示

2022-08-30 15:33:08

我将我的网站从本地测试服务器移动到NameCheap共享主机,现在我遇到了一个问题 - 一些页面没有正确显示utf-8特殊字符(显示问号)。所有页面都采用 utf-8 编码,所有数据库表也是如此。奇怪的是,有些页面显示正确,有些页面显示不正确,看似随机的模式。

例如,我的索引页很好,但我的个人资料页没有。faq.html工作正常,但是当我将其重命名为faq时.php它没有。最奇怪的是,我有一个页面,其中包含两个JQuery选项卡,其中一个显示正确,另一个则不显示!

有人可以帮我解决这个问题吗?


答案 1

这真的很烦人的问题要解决,但你可以尝试这些。

首先,确保文件实际以 UTF-8 格式保存。

然后检查您的HTML标题中是否有。<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

您也可以尝试在 PHP 脚本的开头调用或添加到 .htaccess 文件中。header('Content-Type: text/html; charset=utf-8');AddDefaultCharset UTF-8


答案 2

如果您请求Web服务器向浏览器发出信号,表明该文件采用UTF-8编码,则听起来像这样。faq.html

请检查您的浏览器宣布和使用哪种编码,请参阅浏览器的文档如何执行此操作。每个浏览器都有这个,通常可以通过菜单访问(以指定您的首选项应该使用哪个网站的编码),并且要查看服务器返回的内容,您经常在页面属性中找到它。

然后,如果您请求Web服务器单响浏览器,则该文件采用其他编码,则听起来像这样。可能没有按照默认的PHP配置设置给出字符集/编码。由于它是一个PHP文件,您通常可以通过更改PHP配置default_charsetDocs指令来解决此问题:faq.php

default_charset = "UTF-8"

在主机上找到您的 php.ini并相应地进行编辑。

如果您没有可用的 php.ini,也可以使用 ini_setDocs 函数通过代码进行更改:

ini_set('default_charset', 'UTF-8');

请注意,您在脚本中很早就更改了这一点,因为PHP需要能够发送标头才能使其正常工作,并且如果已经发送了标头,则无法再设置标头。

手动发送标头行也确实有效:Content-Type

header('Content-Type: text/html; charset=UTF-8');

此外,您输出的所有HTML页面在其HTML部分中也具有此标头是一种很好的做法:<head>

<html>
  <head>
    ...
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    ...

希望这是有帮助的。


推荐