Maison  >  Article  >  développement back-end  >  Comment résoudre le problème des caractères chinois tronqués écrits dans la base de données par PHP

Comment résoudre le problème des caractères chinois tronqués écrits dans la base de données par PHP

藏色散人
藏色散人original
2021-09-25 10:29:263820parcourir

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' ");".

Comment résoudre le problème des caractères chinois tronqués écrits dans la base de données par PHP

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");

Utilisez un programme pour exemple la méthode d'interception de caractères


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); 
}

La base de données MYSQL utilise UTF -8 Question d'encodage

1. Utilisez phpmyadmin pour créer une base de données et une table de données

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;

Lors de la création de la table de données : Si le champ est pour stocker le chinois Si tel est le cas, vous devez définir « Organisation » sur : « 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 ;

2. Utilisez PHP pour lire et écrire la base de données

Après vous être connecté à la base de données :

$connection = mysql_connect($host_name, $host_user, $host_pass);

Ajoutez deux lignes :

mysql_query("set character set &#39;utf8&#39;");//读库 
mysql_query("set names &#39;utf8&#39;");//写库 
//其实读写都可以只加入
mysql_query("set names &#39;utf8&#39;");

Ensuite, vous pouvez lire et écrire la base de données MYSQL normalement. .

L'environnement utilisé est appserv-win32-2.5.10 Lors de l'installation de ce package, l'encodage utf8 par défaut est utilisé.

Lors de l'écriture du fichier de connexion à la base de données, écrivez :

$conn = mysql_connect("$host","$user","$password"); 
mysql_query("SET NAMES &#39;UTF8&#39;"); 
mysql_select_db("$database",$conn);

Puis lors de la création de la page, faites attention à cette phrase :

061e324d66bbfb6dadacc326c20e9c8c

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'");

Ensuite, la page devrait également changer en conséquence :


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

Apprentissage recommandé : "

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!

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