php网页中的西里尔字符混乱

php网页中的西里尔字符混乱,php,character-encoding,Php,Character Encoding,我所有的扩展名为.php的文件和西里尔字母编码的文件都被搞得乱七八糟。可能是因为托管提供商升级了PHP服务器 为了说明这个问题,我编写了一个最简单的文件,它不能有任何错误: 由于某些原因,在浏览器中查看网页时,网页默认为unicode。如果您进入查看->文本编码并选择西里尔文(Windows),一切都会好起来 相反,扩展名为.html的完全相同的文件会立即正确显示: 有什么想法吗?现在,我不是这方面的专家,但这让我想起了我遇到的确切问题。所以个人经验如下(我相信这可能会对某人有所帮助): 我

我所有的扩展名为.php的文件和西里尔字母编码的文件都被搞得乱七八糟。可能是因为托管提供商升级了PHP服务器

为了说明这个问题,我编写了一个最简单的文件,它不能有任何错误:

由于某些原因,在浏览器中查看网页时,网页默认为unicode。如果您进入查看->文本编码并选择西里尔文(Windows),一切都会好起来

相反,扩展名为.html的完全相同的文件会立即正确显示:


有什么想法吗?

现在,我不是这方面的专家,但这让我想起了我遇到的确切问题。所以个人经验如下(我相信这可能会对某人有所帮助):

我的问题是服务器上的文件默认设置为windows 1251,而不是我需要的UTF-8。。这使得这些小野兽出现了:� 取代了每一个不仅仅是基本字母之类的符号。巧合的是,这就是您的示例的样子。编码是一样的。我通过使用WinSCP访问文件并手动将文件切换到UTF-8来修复它。。。具有讽刺意味的是,你的文件显示了我在我的网站上看到的内容

一定有比WinSCP更好的方法来实现这一点,但老实说,这是我唯一一次必须手动完成这一操作,因此这正是我在那里单击的内容(打开文件后):

您还可以尝试使用meta标记来修复它,以告诉浏览器要使用哪个字符集,但是如果文件的编码错误,则文件在保存时可能会变形

<meta charset="utf-8">

这可能对你不起作用,但对我起作用了,所以还有希望:)


希望它能帮助您,或者至少能为您指明正确的方向:)

我只是将php.ini文件和这行“default_charset=“windows-1251”放在带有西里尔字母编码的文件目录中。这将覆盖服务器的php.ini,后者将默认字符集设置为UTF。
现在一切都好了:

PHP文件中只有HTML,或者它是从数据库中选择的?我的网站实际使用的PHP文件中显然包含PHP代码。但是这个问题已经在一个没有php代码但只有.php扩展名的文件中看到了,我已经将testencoding.php的编码改为UTF-8,但仍然是一样的。接下来,我编辑了该文件并从头部删除了charset=windows-1251,并将其保存在UTF-8中。现在西里尔文字符显示正确:我也把原始文件放在我的大学网站上,它正确显示为:。因此,问题与PHP如何处理文件有关。