Question

En utilisant PHP contre une base de données UTF-8 conforme. Voici comment va dans l'entrée.

  1. types d'utilisateur entrée dans textarea
  2. textarea codé avec javascript escape ()
  3. passé par courrier HTTP
  4. décodé avec PHP rawurldecode ()
  5. passé par htmlpurifier avec les paramètres par défaut
  6. échappé pour MySQL et stocké dans la base de données

Et il sort de la manière habituelle et je cours unescape () de la charge de page. Est de permettre aux gens de, disons, copier et coller directement à partir d'un document Word et ont les guillemets apparaissent.

Mais htmlpurifier semble être démolir non-UTF-8 caractères spéciaux, ceux qui échappent () à une expression simple%, comme Ö, qui échappe à% D6, alors que SmartQuotes échapper à% u2024 ou quelque chose et aller dans la base de données de cette façon. Il faut à la fois le caractère spécial et celui qui suit immédiatement.

Je dois changer quelque chose dans ce processus. Peut-être que je dois changer plusieurs choses.

Que puis-je faire pour ne pas obtenir des caractères spéciaux soient faussés?

Était-ce utile?

La solution

  
      
  1. textarea codé avec javascript escape ()
  2.   

n'est pas sûr escape pour les non-ascii. Utilisez escapeURIComponent

  
      
  1. passé par courrier HTTP
  2.   

Je suppose que vous utilisez XmlHttpRequest? Sinon, assurez-vous que la page contenant le formulaire est servi sous forme utf-8.

  
      
  1. décodé avec PHP rawurldecode ()
  2.   

Si vous accédez à la valeur par $_POST, vous ne devriez pas le décoder, puisque cela a déjà été fait. Cela gâchera données.

  
      
  1. échappé pour MySQL et stocké dans la base de données
  2.   

Assurez-vous que vous n'avez pas magic quotes activée. Assurez-vous que les tables de base de données stocke au format UTF-8 (L'encodage et la collation doit être à la fois utf-8). Assurez-vous que la connexion entre PHP et MySql est utf-8 (Utilisez set names utf8, si vous ne l'utilisez AOP).

Enfin, assurez-vous que la page est servi sous forme utf-8 lors de l'émission de la chaîne à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top