CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Problème] Encodage

IchirinNoHana
IchirinNoHana
Niveau 10
26 novembre 2014 à 20:56:43

Bonjour j'ai un problème d'encodage UTF-8. Il n'est ni au niveau de mon formulaire HTML ni au niveau de mon traitement PHP ni au niveau de ma BDD, le problème c'est que, quand je demande à afficher un chaîne de caractère contenant des accents à PHP, tout va bien, mais quand je demande le caractère en particulier par exemple : echo $nom[2];, pour "ELÉ" par exemple, le navigateur me retourne �.

Ça me pose pas mal de soucis, j'ai essayé utf8_encode(), mais ça ne marche pas. Pourtant j'ai bien défini :

-Pour le HTML : <meta http-equiv="Content-Type" content="text/html ; charset=UTF-8" />

et : PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" au niveau de ma commande de connection SQL.

Je ne vois vraiment pas d'où vient le problème.

J'ai essayé alors de faire utf8_decode() au début puis utf8_encode() à la fin du traitement. Mais problème, les caractères accentués se transforment en �.

Je vous remercie d'avance.

angivare
angivare
Niveau 10
26 novembre 2014 à 21:08:19

ta balise html est cassée

angivare
angivare
Niveau 10
26 novembre 2014 à 21:10:38

ah oui non j'en ai juste sauté un bout
un petit snippet peut-être? j'ai l'impression que c'est ton "SET NAMES utf8" qui est ignoré

IchirinNoHana
IchirinNoHana
Niveau 10
26 novembre 2014 à 21:52:49

Alors je m'explique, le prof veut qu'on crée un formulaire qui envoie une chaîne de caractère pour être ensuite traitée par PHP, le problème est qu'il veut absolument qu'on ne puisse rentrer que des lettres, des accents, pas de chiffres, de $ et autres %. La difficulté c'est qu'il demande comme personne ne sait faire de javascript, de se débrouiller avec HTML, PHP et SQL. J'avais donc dans l'idée d'enregistrer dans une table sous phpmyadmin une table avec les caractères autorisés pour qu'ensuite, quand l'utilisateur envoie la chaîne de caractère, cette dernière soit traitée caractère par caractère et comparée avec une requête SQL avec chaque caractère de la table des caractères autorisées. J'ai mis en place un compteur '$i' qui initialement a la valeur de la chaîne de caractère puis si chaque caractère est dans la table, ce dernier tombe à 0 alors le traitement s'effectue, sinon ça veut dire qu'un caractère n'est pas autorisé et alors je fixe '$_POST['nom'] à 0, ainsi on ne rentrera pas dans la boucle de traitement et on sera renvoyé directement au formulaire initial.

https://image.noelshack.com/fichiers/2014/48/1417034776-bizarre.png

Le code marche nickel et ne retourne pas d'erreur.

Bunyan
Bunyan
Niveau 17
26 novembre 2014 à 23:22:19

Oula, tu fais compliqué.
Une expression régulière en [a-zA-Z] semble suffire largement à ton besoin.

IchirinNoHana
IchirinNoHana
Niveau 10
27 novembre 2014 à 00:19:55

J'ai finalement réussi en passant par htmlentities() puis en créant une fonction hyper lourde mais qui marche et qui me permet d'éliminer tous les caractères spéciaux sauf les accents et le tiret.

Pseudo supprimé
Pseudo supprimé 27 novembre 2014 à 01:00:13

Lourde ? Mon expression régulière qui fait un filtrage similaire n'est pas plus compliquée que ça :

IS_HARMLESS_TEXT = '[a-zA-Z0-9_ \u00C0-\u017F.!:?/*+\'\"\n\r!:;,()-]*';

ChiwaWay
ChiwaWay
Niveau 10
27 novembre 2014 à 02:04:01

Moi aussi je commence à programmer, mais je ne comprends pas très bien la fonction postée par vdd.

Pseudo supprimé
Pseudo supprimé 27 novembre 2014 à 02:36:19

Est un caractère 'sans danger' tout caractère répété autant de fois que souhaité ou pas (*) ce qui est entre les crochets []. Le - entre deux caractères indique un intervalle, par exemple A-Z toutes les majuscules. Les \uXXXX capturent les accents, etc

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment