utf-8特殊字符不显示

rob*_*ert 24 html php encoding utf-8

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

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

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

RCE*_*RCE 52

这是一个非常烦人的问题,但你可以尝试这些.

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

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

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

  • 我的问题通常是实际文件不是UTF-8格式.例如,如果浏览器将其读作UTF-8但实际文件不是,则ASCII的字符"ä"将显示为" ". (5认同)

hak*_*kre 6

听起来如果您请求faq.html网络服务器向您的浏览器发出信号,表明该文件采用UTF-8编码.

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

然后听起来就像是,如果您请求faq.php网络服务器在浏览器中声明文件是其他编码.根据默认的PHP配置设置,可能没有给出charset/encoding.由于它是一个PHP文件,您通常可以通过更改PHP配置default_charsetDocs指令来解决此问题:

default_charset = "UTF-8"
Run Code Online (Sandbox Code Playgroud)

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

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

ini_set('default_charset', 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

请注意在脚本中尽早更改此内容,因为PHP需要能够发送标头以使其正常工作,并且如果已经发送标头,则不能再设置标头.

手动发送Content-Type标题行也可以:

header('Content-Type: text/html; charset=UTF-8');
Run Code Online (Sandbox Code Playgroud)

此外,最好输出您输出的所有HTML页面以及HTML <head>部分中的标题:

<html>
  <head>
    ...
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    ...
Run Code Online (Sandbox Code Playgroud)

希望这是有帮助的.