Solution aux caractères chinois tronqués écrits par PHP dans la base de données : 1. Créez une base de données et définissez l'encodage "utf8_general_ci" ; 2. Utilisez PHP pour lire et écrire la base de données, puis définissez "mysql_query("set names 'utf8' ");".
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3
Comment résoudre le problème du chinois tronqué lorsque PHP écrit dans la base de données ?
PHP écrit dans la base de données Problème de base de données chinoise tronquée
Problème de conversion de page PHP en codage UTF-8
1 Ajoutez une ligne au début du code :
header("Content-Type: text/html;charset=utf-8");
2. Cliquez sur le menu de l'éditeur : "Fichier" -> "Enregistrer sous" pour voir l'encodage actuel du fichier, assurez-vous que l'encodage du fichier est : UTF-8,
S'il est ANSI, vous devez modifier l'encodage en : UTF-8.
3. Problème de nomenclature d'en-tête de fichier PHP :
Les fichiers PHP ne doivent pas avoir de balises de nomenclature
Sinon, la session ne sera pas utilisable et il y aura des invites similaires :
Attention : session_start() [function.session-start] : Impossible d'envoyer limiteur de cache de session - en-têtes déjà envoyés
En effet, lors de l'exécution de session_start(), la page entière ne peut pas avoir de sortie, mais comme la balise BOM existe dans la page PHP précédente,
PHP considère cette balise BOM comme une sortie, donc quelque chose s'est mal passé !
Il faut donc supprimer la balise BOM de la page PHP
Méthode pour supprimer cette balise BOM :
1. Vous pouvez ouvrir le fichier avec Dreamweaver et le réenregistrer pour supprimer la balise BOM !
2. Vous pouvez ouvrir le fichier avec EditPlus, et dans le menu "Préférences"->"Fichier"->"Identité UTF-8", le régler sur : "Toujours supprimer les signatures",
Enregistrez ensuite le fichier, et vous pouvez supprimer la balise BOM !
4. Problème d'encodage UTF-8 lorsque PHP enregistre des fichiers en pièces jointes :
Lorsque PHP enregistre des fichiers en pièces jointes, le nom du fichier doit être encodé en GB2312,
Sinon, s'il y a du chinois dans le nom du fichier, il sera tronqué :
Si votre PHP lui-même est un fichier au format d'encodage UTF-8,
Vous devez convertir la variable de nom de fichier de UTF-8 en GB2312 :
iconv("UTF-8", "GB2312", "$filename");
function utf8_substr($str,$len) { for($i=0;$i<$len;$i++) { $temp_str=substr($str,0,1); if(ord($temp_str) > 127){ $i++; if($i<$len){ $new_str[]=substr($str,0,3); $str=substr($str,3); } }else { $new_str[]=substr($str,0,1); $str=substr($str,1); } } return join($new_str); }
Lors de la création de la base de données, veuillez définir "Organisation" sur : "utf8_general_ci" ou exécutez l'instruction :
CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Si le champ stocke l'anglais ou des chiffres, la valeur par défaut est correcte.
L'instruction SQL correspondante, par exemple :
CREATE TABLE `test` ( `id` INT NOT NULL , `name` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM ;
$connection = mysql_connect($host_name, $host_user, $host_pass);
mysql_query("set character set 'utf8'");//读库 mysql_query("set names 'utf8'");//写库 //其实读写都可以只加入 mysql_query("set names 'utf8'");
Lors de l'écriture du fichier de connexion à la base de données, écrivez :
$conn = mysql_connect("$host","$user","$password"); mysql_query("SET NAMES 'UTF8'"); mysql_select_db("$database",$conn);
De cette façon, peu importe les chinois saisis dans la base de données ou l'affichage de la page, tout sera normal.
Dans la version DW CS4, la page utf8 est également générée par défaut.
De même, si vous écrivez le fichier de connexion à la base de données au début : mysql_query("SET NAMES 'GBK'");
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
Tutoriel vidéo PHP"
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!