IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

encodage utf8


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut encodage utf8
    Bonjour,

    Ma configuration Wamp interne

    Mysql 5.7.24
    Php 7.2.14
    Phpmyadim 4.8.4
    Apache 2.4.37

    Base en uft8mb4_unicode_ci
    Tables en utf8_general_ci
    Fichier passé en utf8 sans BOM avec notepad++

    Résultat Cérès 10c bistre

    Pour info sur le serveur externe tout est OK

    Une idée du problème ?

    Merci
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,



    Si PDO :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                $pdo = new PDO('mysql:host=localhost;port=3306;dbname=ma_base;charset=utf8','root', '', [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_EMULATE_PREPARES   => false
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"	// encodage UTF-8 /* A AJOUTER ! */
                ]);

  3. #3
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut
    Bonsoir,

    Oui j'ai lu le tuto
    Je ne suis pas en PDO (pas encore mure pour ça) je suis en mysqli

    Cordialement
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    pour mysqli, voir : mysqli_set_charset()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "test");
    $mysqli->set_charset("utf8");

  5. #5
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut
    Merci

    mais ça ne marche toujours pas

    extrait du fichier CSV
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    11	Cérès 10c bistre	Jacques Jean Barre
    22	Cérès 15c	Jacques Jean Barre
    33	Cérès noir, premier timbre français 1849 	Jacques Jean Barre
    44	Cérès 25 c	Jacques Jean Barre
    55	Cérès 40c	Jacques Jean Barre
    Extrait du fichier txt (uft8)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1;N° 1;Cérès 10c bistre;Jacques Jean Barre;17.059.500;1850;x;bistre jaune;non Dentelé;10 c;x;0001.jpg;image/image_1_a_216/;3000;0;355;Jacques Jean Barre;Yvert et Tellier;12 septembre 1850;ceres;N° 1;2800;1150;350;classique;ne pas modifier;x;x;x;Typographie;1853;x;95;110;x;01/01/1000;x;x;01/01/1000;x;La*France a émis son premier timbre poste, le célèbre «Cérès» à 20 centimes, le premier janvier 1849 sous la IIème République Ce timbre porte le N° 3.* Une seule famille de graveurs de la Monnaie de Paris, les Barre, a réalisé tous les timbres français de cette époque. Jean Jacques Barre a gravé les timbres «Cérès», son fils Albert Désiré Barre ceux du Second Empire à l'effigie de Napoléon III .*Le timbre le plus coté actuellement et le plus connu est le N° 7 vermillon (il existe plusieurs variétés de couleur) Ce timbre fut retiré de la vente le 1er Décembre 1849.;x;x;x;x;fin
    2;N° 2;Cérès 15c;Jacques Jean Barre;3.309.900;1850;x;vert;non Dentelé;15 c;x;0002.jpg;image/image_1_a_216/;26500;0;1050;Jacques Jean Barre;Yvert et Tellier;29 juillet 1850;ceres;N° 2;28500;14000;1100;classique;ne pas modifier;x;x;x;Typographie;1 juillet 1853.;x;95;110;x;01/01/1000;x;x;01/01/1000;x;x;x;x;x;x;fin
    3;N° 3;Cérès noir, premier timbre français 1849 ;Jacques Jean Barre;41.700.000;1849;x;noir sur jaune;non Dentelé;20 c;x;0003.jpg;image/image_1_a_216/;600;0;65;Jacques Jean Barre;Yvert et Tellier;1 janvier 1849;ceres;N° 3;500;275;55;classique;ne pas modifier;x;x;x;Typographie;octobre 1850.;x;95;110;x;01/01/1000;x;x;01/01/1000;x;x;x;x;x;x;fin
    4;N° 4;Cérès 25 c;Jacques
    script qui charge le fichier texte dans la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    <?php
    // script de test pour utf8
    if(!isset($_SESSION['test'])) $_SESSION['test']='non';
    if($_SESSION['test']=='ok')
    {
    //----  sauvegarde de la table avant mise à jour ---------------
    include('../script/gestion_connexion.php');
     
    	 $sql="DROP TABLE IF EXISTS test_back"; // suppression de la table de secour
    	 mysqli_query($base_gene,$sql)  or die ('Erreur sql :suppression test_back'.mysqli_error($base_gene)); 
     
    	$sql='CREATE table test_back LIKE test' ; // création  de la table de secour
    	mysqli_query($base_gene,$sql)  or die ('Erreur sql :Création de la table test_back'.mysqli_error($base_gene)); 
     
    	$sql='INSERT INTO test_back SELECT * FROM test'; // remplissage de la table de secour
    	mysqli_query($base_gene,$sql)  or die ('Erreur sql :Copie table test_back'.mysqli_error($base_gene)); 
    //-----------------------------------------------------------------------
     
    $a=0;
    $mot=array();
    $temps_debut = microtime(true);
     
    	$fp = fopen("Fic_texte/test.txt", "r");
    	{
     
    		if ($fp)
    		 {
        		while (!feof($fp))
    			 {
           			 $a++;
    				 $buffer = fgets($fp,70000);
    				$mot[$a]=explode(";",$buffer);
     
    				$num=$mot[$a][0];
     
    				//-- modification de la structure des dates
    				if(isset($mot[$a][35]))
    				{
    					$test=explode("/",$mot[$a][35]);
    							if(count($test)==3)
    							{
    								$m='';
    								$m=$test[2].'-'.$test[1].'-'.$test[0];
    								$mot[$a][35]=$m;
    							}
    				}			
    					else $mot[$a][35]='1000-01-01';
     
    				if(isset($mot[$a][38]))
    				{
    					$test=explode("/",$mot[$a][38]);
    							if(count($test)==3)
    							{
    								$m='';
    								$m=$test[2].'-'.$test[1].'-'.$test[0];
    								$mot[$a][38]=$m;
    							}
    				}			
    					else $mot[$a][38]='1000-01-01';
     
    if(trim($mot[$a][0])=='mun' || trim($mot[$a][0])=='x' || trim($mot[$a][0])=='mot 2'  || trim($mot[$a][0])=='$$$$$$$$') $a--;
     
    	} // fin de $fp = fopen($_SESSION
    	} // fin de if ($fp)
    	} // fin de while
    	        fclose ($fp);
    } //fin de if($_SESSION['test']=='ok')	
     
    ?>
     
    <?php
     
    if($_SESSION['test']=='ok')
    {	
    $sql='TRUNCATE test' ;	
    mysqli_query($base_gene,$sql)or die ('Erreur table France !'.$sql.'<br>'.mysqli_error($base_gene));
    $index=1;
    //--------------------------------------------------------------------------
    for($i=2;$i<$a;$i++)
    {	
     
    	if($mot[$i][0]<>'$$$$$$$$$$' && $mot[$i][0]<>'x' && $mot[$i][0]<>'num' )
    	{
     
    	$sql= 'INSERT INTO test VALUES ("'.$index.'"," '.trim($mot[$i][0]).' "," '.trim($mot[$i][2]).' ","'.trim($mot[$i][3]).'","'.trim($mot[$i][4]).'","'.trim($mot[$i][5]).'","'.trim($mot[$i][6]).'","'.trim($mot[$i][7]).'","'.trim($mot[$i][8]).'","'.trim($mot[$i][9]).'","'.trim($mot[$i][10]).'","'.trim($mot[$i][11]).'","'.trim($mot[$i][12]).'","'.trim($mot[$i][13]).'","'.trim($mot[$i][14]).'","'.trim($mot[$i][15]).'","'.trim($mot[$i][16]).'","'.trim($mot[$i][17]).'","'.trim($mot[$i][18]).'","'.trim($mot[$i][19]).'","'.trim($mot[$i][20]).'","'.trim($mot[$i][21]).'","'.trim($mot[$i][22]).'","'.trim($mot[$i][23]).'","'.trim($mot[$i][24]).'","'.trim($mot[$i][25]).'","'.trim($mot[$i][26]).'","'.trim($mot[$i][27]).'","'.trim($mot[$i][1]).'","'.trim($mot[$i][28]).'","'.trim($mot[$i][29]).'","'.trim($mot[$i][30]).'","'.trim($mot[$i][31]).'","'.trim($mot[$i][32]).'","'.trim($mot[$i][33]).'","'.trim($mot[$i][34]).'","'.trim($mot[$i][35]).'","'.trim($mot[$i][36]).'","'.trim($mot[$i][37]).'","'.trim($mot[$i][38]).'","'.trim($mot[$i][39]).'","'.trim($mot[$i][40]).'","'.trim($mot[$i][41]).'","'.trim($mot[$i][42]).'","'.trim($mot[$i][43]).'","'.trim($mot[$i][44]).'","'.trim($mot[$i][45]).'")';
    mysqli_query($base_gene,$sql)or die ('Erreur table France !'.$sql.'<br>'.mysqli_error($base_gene));
    $index++;
    		}
    }  // fin de for($i=3;$i<$a+1;$i++)	
     
     
    } // fin de if($_SESSION['test']=='ok')
     echo 'nombre de lignes insérées : '.$index;
     
    ?>
    75 ans quelques dents en moins, mais toujours envie d'apprendre

  6. #6
    Membre habitué
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 382
    Points : 161
    Points
    161
    Par défaut
    Je viens de tester
    si c'est codé en ANSI ça marche ???
    ça veut dire quoi ??
    75 ans quelques dents en moins, mais toujours envie d'apprendre

Discussions similaires

  1. [Encodage] utf8 image affichage
    Par oim dans le forum Langage
    Réponses: 7
    Dernier message: 05/04/2007, 14h24
  2. Pb encodage utf8
    Par rems14 dans le forum Outils
    Réponses: 1
    Dernier message: 18/02/2007, 19h47
  3. [Tableaux] Encodage utf8 d'un tableau
    Par lodan dans le forum Langage
    Réponses: 8
    Dernier message: 28/08/2006, 13h57
  4. Problème d'encodage UTF8
    Par vg33 dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2006, 19h28
  5. fonction native d'encodage utf8 ?
    Par Bruno2000 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/05/2006, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo