CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [Problème] Encodage

DébutPage précedente
1
Page suivantePage suivante
IchirinNoHana IchirinNoHana
MP
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
MP
Niveau 10
26 novembre 2014 à 21:08:19

ta balise html est cassée

angivare angivare
MP
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
MP
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://www.noelshack.com/2014-48-1417034776-bizarre.png

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

Bunyan Bunyan
MP
Niveau 14
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
MP
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é
Niveau 10
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
MP
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é
Niveau 10
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

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment