Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为PHP文件设置UTF-8编码_Php_Api_Utf 8 - Fatal编程技术网

如何为PHP文件设置UTF-8编码

如何为PHP文件设置UTF-8编码,php,api,utf-8,Php,Api,Utf 8,我有一个PHP脚本,名为: 以纯文本形式显示某些数据的: CzÄ�Ĺ�Ä� mowy: rzeczownik Przypadek: dopeĹ�niacz Rodzaj: ĹźeĹ�ski Liczba: mnoga 正如你所看到的,在适当的字符的地方有这样的“灌木丛”。我想做的是以某种方式显示它,以便人们在浏览器中看到正确的UTF-8字符 您可以将它封装在HMTL标记中,并使用meta UTF-8编码进行设置,但由于从该脚本接收的数据将被进一步处理,因此我不想使用任何HTML标记,它应该只

我有一个PHP脚本,名为:

以纯文本形式显示某些数据的:

Cz��� mowy: rzeczownik
Przypadek: dope�niacz
Rodzaj: şe�ski
Liczba: mnoga
正如你所看到的,在适当的字符的地方有这样的“灌木丛”。我想做的是以某种方式显示它,以便人们在浏览器中看到正确的UTF-8字符

您可以将它封装在HMTL标记中,并使用meta UTF-8编码进行设置,但由于从该脚本接收的数据将被进一步处理,因此我不想使用任何HTML标记,它应该只是纯文本结果集

那么,有没有一种方法可以在不使用元标记的情况下通知浏览器该文件是UTF-8


PS.文件是用UTF-8编码的,如果我在浏览器中将字符集编码手动更改为UTF-8,它会显示ok,但我要完成的是,人们不需要这样做。

您必须指定数据的编码方式。无论是在meta还是在header中

header('Content-Type: text/plain; charset=utf-8');

默认情况下,PHP总是返回以下标题:“Content-Type:text/html”(注意没有字符集),因此必须使用

<?php header('Content-type: text/plain; charset=utf-8'); ?>

试试这种方法
标题('Content-Type:text/plain;charset=utf-8')

还请注意,将标题设置为“text/plain”将导致所有html和php(部分)在屏幕上将字符打印为文本,而不是html。因此,在使用文本类型
plain
时,请注意可能不解析HTML

使用:

header('Content-type: text/html; charset=utf-8');
也可以返回HTML和PHP。不仅仅是文本。

HTML文件:

<head>

<meta charset="utf-8">

</head>

PHP文件:

<?php header('Content-type: text/plain; charset=utf-8'); ?>

Html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="x" content="xx" />

vs Php:

<?php header('Content-type: text/html; charset=ISO-8859-1'); ?>
<!DOCTYPE HTML>
<html>
<head>
<meta name="x" content="xx" />


他发送的是纯文本,不是html。@awm:那又怎样?它会改变什么吗?内容类型应该是text/plain,而不是text/html。是的,它们的显示方式不同。@awm:oops,double fail to me。这是正确的方式<代码>内容类型通常是大写的。(这有什么区别吗?)对不起,这是一个与IIS相关的问题-有些人报告小写标题不起作用properly@tomaszs:嗯,我错过了什么?我已经写了所有可能的地方来指定编码。是的,我写的meta是毫无疑问的,你写的我应该使用meta。@tomasz:我写的你必须根据情况选择其中一个。我已经阅读了所有的问题,这就是为什么我给出了一个带有标题的示例,而没有关于meta的内容。在有人发布之前,你的第一个答案没有示例。所以请不要写,你读,因为你没有。你可以写得很好——我没有写,也没关系。但现在你走错了路。没关系,可能是复制品
<?php header('Content-type: text/html; charset=ISO-8859-1'); ?>
<!DOCTYPE HTML>
<html>
<head>
<meta name="x" content="xx" />