Maison  >  Article  >  développement back-end  >  Résumé des solutions associées au problème d'en-tête php tronqué

Résumé des solutions associées au problème d'en-tête php tronqué

藏色散人
藏色散人original
2020-07-21 11:05:562605parcourir

Solution à l'en-tête php tronqué : 1. Ajoutez l'instruction "header("Content-type: text/html; charset=utf-8");" à la page PHP ; pour définir l'encodage de la page ; 3. Unifier l'encodage des pages PHP.

Résumé des solutions associées au problème d'en-tête php tronqué

L'en-tête php résout les problèmes de code tronqué et d'autres problèmes de code tronqué

Recommandé : "Tutoriel PHP

en-tête php pour définir une page php comme encodage utf ou encodage GBK

page php comme encodage utf

header("Content-type: text/html; charset=utf-8");

page php comme encodage gbk

header("Content-type: text/html; charset=gb2312");

La page php est codée en big5

header("Content-type: text/html; charset=big5");

Habituellement, le code ci-dessus est placé sur la page d'accueil de la page php

La différence entre utiliser un en-tête ou une méta pour implémenter l'encodage de page PHP

1. Encodage de page

1. Utilisez la balise 1dd9d9bc813bb1594796bd2b8615c022 l'encodage de la page

Ceci La fonction de la balise est de déclarer quel jeu de caractères l'encodage utilisé par le navigateur du client pour afficher la page xxx peut être GB2312, GBK, UTF-8 (différent de MySQL, qui est UTF8). , etc. Par conséquent, la plupart des pages peuvent utiliser cette méthode pour indiquer au navigateur quel encodage utiliser lors de l'affichage de cette page, afin d'éviter les erreurs d'encodage et les caractères tronqués. Mais parfois, nous constaterons que cette phrase ne fonctionne toujours pas. Quel que soit le nom de xxx, le navigateur utilise toujours le même codage, j'en reparlerai plus tard.

Veuillez noter que e8e496c15ba93d81f6ea4fe5f55a2244 appartient aux informations HTML et n'est qu'une déclaration. Cela indique que le serveur a transmis les informations HTML au navigateur.

2. header("content-type:text/html; charset=xxx");

La fonction de cette fonction header() est d'envoyer les informations entre parenthèses au http. en-tête.

Si le contenu entre parenthèses est tel que mentionné dans l'article, la fonction est fondamentalement la même que la balise 3f2ae36b77c0b1762e465ca019e7bd30 . Mais la différence est que s’il existe cette fonction, le navigateur utilisera toujours l’encodage xxx que vous avez demandé et ne désobéira jamais, cette fonction est donc très utile. Pourquoi cela se produit-il ? Ensuite, il faut parler de la différence entre l'en-tête HTTPS et les informations HTML :

L'en-tête https est une chaîne envoyée par le serveur avant d'envoyer les informations HTML au navigateur via le protocole HTTP.

Étant donné que la balise méta appartient aux informations HTML, le contenu envoyé par header() atteint le navigateur en premier. Le point populaire est que header() a une priorité plus élevée que meta (je ne sais pas si cela peut être le cas). soit dit). Ajoutez une page php contenant à la fois header("content-type:text/html; charset=xxx") et 1dd9d9bc813bb1594796bd2b8615c022 le navigateur ne reconnaîtra que l'ancien en-tête http et non la méta. Bien entendu, cette fonction ne peut être utilisée qu’au sein des pages PHP.

Il reste également une question : pourquoi le premier fonctionne-t-il définitivement, mais le second ne fonctionne parfois pas ? C'est pourquoi nous voulons ensuite parler d'Apache.

3. AddDefaultCharset

Dans le dossier conf du répertoire racine d'Apache, se trouve l'intégralité du document de configuration d'Apache httpd.conf.

Ouvrez httpd.conf avec un éditeur de texte. La ligne 708 (différentes versions peuvent être différentes) contient AddDefaultCharset xxx, où xxx est le nom d'encodage. La signification de cette ligne de code : définissez le jeu de caractères dans l'en-tête https du fichier de page Web sur l'ensemble du serveur sur votre jeu de caractères xxx par défaut. Avoir cette ligne équivaut à ajouter un en-tête ("content-type: text/html; charset=xxx") à chaque fichier. Vous pouvez maintenant comprendre pourquoi le navigateur utilise toujours gb2312 même si le paramètre méta est utf-8.

S'il y a un en-tête("content-type:text/html; charset=xxx") dans la page Web, le jeu de caractères par défaut sera remplacé par le jeu de caractères que vous avez défini, donc cette fonction sera toujours être utile. Si vous ajoutez un "#" devant AddDefaultCharset xxx, commentez cette phrase et que la page ne contient pas d'en-tête ("content-type..."), alors c'est au tour de la balise méta de prendre effet.

Résumé :

Trions

header("content-type:text/html; charset=xxx") 
AddDefaultCharset xxx 
<META http-equiv="content-type" content="text/html; charset=xxx">

Si vous êtes un programmeur Web, ajoutez un en-tête("content-type: text/html ; charset=xxx"), en vous assurant qu'il peut être affiché correctement sur n'importe quel serveur et qu'il a une forte portabilité.

Quant à la phrase AddDefaultCharset xxx, qu'elle doive être commentée ou non est une question d'opinion. Quoi qu'il en soit, je l'ai commenté, mais je dois aussi écrire header() lors de l'écriture d'une page, afin qu'elle puisse être affichée normalement sur le serveur.

2. Encodage de la base de données

Avant d'interroger la base de données, le programme PHP exécute d'abord mysql_query("SET NAMES xxxx"); (charset= xxxx), si charset=utf8 dans la page web, alors xxxx=utf8, si charset=gb2312 dans la page web, alors xxxx=gb2312, presque tous les programmes WEB ont un code commun pour se connecter à la base de données, qui est placé dans un fichier. Dans ce fichier, ajoutez simplement mysql_query("set names").

SET NAMES 显示客户端发送的 SQL 语句中使用什么字符集。因此,SET NAMES 'utf-8'语句告诉服务器“将来从这个客户端传来的信息采用字符集utf-8”。它还为服务器发送回客户端的结果指定了字符集。(例如,如果你使用一 个SELECT语句,它表示列值使用了什么字符集。) 

PHP页面编码统一 

MySQL数据库编码、html页面编码、PHP或html文件本身编码要全部一致。 

  1、MySQL数据库编码:建立数据库时指定编码(如gbk_chinese_ci),建立数据表、建立字段、插入数据时不要指定编码,会自动继承数据库的编码。 

数据库连接时,也有编码,可以在连接完数据库后,执行 

mysql_query(&#39;SET NAMES gbk&#39;);//将gbk换成你的编码,如utf8。

  2、html页面的编码,指的是这一行的设置: 

<meta http-equiv="Content-Type" content="text/html; charset=gbk" />

  3、PHP或html文件本身的编码:用editplus打开php文件或html文件,另存时,选择的编码,如果数据库和页面编码是gbk,则这儿的编码选择ansi;如果数据库和页面编码是utf-8,则这儿也选择utf-8。 

  4、另外要注意的是,Javascript或Flash中传递的数据是utf-8编码,如果数据库和页面编码是gbk,要进行转码,然后写入数据库。 

iconv(&#39;utf-8&#39;, &#39;gbk&#39;, $content);

5、在PHP程序中,可以加上一行,来指定PHP源程序的编码: 

header(&#39;Content-type: text/html; charset=gbk&#39;);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn