7
votes

Modifier le jeu de caractères par défaut de fonctions PHP comme "htmlspecialchars"

J'utilise PHP 5.2.6 et l'ensemble de caractères de mon application est UTF-8.

Maintenant, comment dois-je modifier le jeu de caractères par défaut de PHP? Pas celui qui spécifie le temps de sortie du mime et le jeu de caractères de la sortie.

mais qui changera pour toute la fonction PHP comme HTMLSpecialchars, HTMLentités, etc.

Je sais, il y a un paramètre dans Ces fonctions qui prennent le jeu de caractères de la chaîne d'entrée. Mais je ne veux pas spécifier pour toutes les fonctions que j'utilise. Et si quelque part que j'oublie, ce sera en désordre.

Je sais aussi que je peux envelopper ces fonctions et créer mon propre wrapper comme: xxx

Je n'aime pas non plus cette solution.

Je veux vraiment dire à PHP, que par défaut, prenez "UTF-8" comme jeu de caractères. Pas 'iso-8859-1'.

est-il possible?


1 commentaires

Je ne pense pas que ce soit possible, mais c'est une bonne question. +1


4 Réponses :


2
votes

2
votes

Il y a une fonction C déterminer_charset (char * charset_hint ...) i> utilisé pour trouver le "droit" Charset basé sur

  • Qu'est-ce qui a été passé comme charset_hint i> li>
  • Le réglage de MB_internal_encoding a > li>
  • Par défaut_Charset LI>
  • CODESET DU TEMPS DE COMPile LI>
  • Dernier point mais non le moindre: LC_CTYPE Locale LI> ul>

    Dans cet ordre et selon que certaines extensions sont intégrées ou non.
    Le "problème" est, lorsque vous appelez htmlenttities ('xyz') i> ceci déterminez_charset () i> est appelé avec Charset_hint = null et la première cette fonction est: P >

    /* Guarantee default behaviour for backwards compatibility */
    if (charset_hint == NULL)
        return cs_8859_1;
    


2 commentaires

C'est ce que je veux vraiment me débarrasser.


Je ne vois pas comment, à moins que vous ne changez de code source PHP (probablement pour la fonction HTMlenttities)



1
votes

Je ne suis pas tout à fait sûr, mais je pense mbstring.func_overloadload fonctionne avec htmlenttities.

htmlspecialchars est le neutre de Charse-neutral BTW. (Au moins aussi longtemps que le charert soutient le sous-ensemble ASCII, quel UTF-8 fait).


1 commentaires

Ce n'est pas tout à fait correct, quoi que ce soit en dehors de la gamme ASCII / Win-1252 sera muturé par HTMLENTités si vous ne spécifiez pas le jeu de caractères.



0
votes

de php.net:

5.4.0 La valeur par défaut du paramètre de codage a été modifiée en UTF-8.

Dans les temps modernes, vous devez simplement mettre à jour votre version de PHP à 5.4 ou mieux et définir la directive par défaut_Charset dans PHP.INI sur UTF-8 (qui est déjà la valeur par défaut). Vous pouvez également être capable de le faire de manière programmative comme ceci: xxx

sources:


0 commentaires