web-dev-qa-db-fra.com

Javascript et PHP comment devrais-je en / décoder mes données

J'aimerais savoir en quel cryptage dois-je encoder mes données et pourquoi. Tout d’abord, j’utilise la méthode GET car c’est un moteur de recherche intégré au site Web. Deuxièmement, j'utilise le langage RTL (hébreu). Et troisièmement, c’est la raison pour laquelle je pose cette question - Firefox et Safari (si je comprends bien) encodent et décodent les URL automatiquement. Donc, si j'ai encodé l'URL, dans Firefox, je le verrai décodé, ce qui est bien. Mais si je copie-colle l'URL dans la barre d'adresse et que j'entre sur le site, Firefox code l'URL non codée en UTF (je pense).

Que dois-je utiliser en/décoder? Et comment puis-je surmonter le en-décodage automatique de Firefox?

1
Ron

Vous ne savez pas exactement de quoi vous parlez; il semble que vous confondiez les concepts de cryptage, d'encodage du contenu et d'encodage d'URL.

Je suppose que ce n'est pas lié au cryptage. En ce qui concerne l'encodage du contenu, tout navigateur moderne (même IE 6) gère Unicode. Tant que vos fichiers PHP sont codés au format UTF-8 ou UTF-16, vous devriez pouvoir utiliser les points de code de langue hébraïque de votre choix. La plupart des serveurs Web lorsqu’ils servent PHP examinent le codage du fichier source et l’utilisent dans le type de contenu des pages servies, mais si vous voulez être sûr, vous pouvez explicitement avoir votre PHP envoie le contenu des en-têtes HTTP d'encodage:

<?php header("Content-Type: text/html; charset=UTF-16"); ?>

En ce qui concerne les URL, vous devez coder toutes les URL et ne pas vous inquiéter de la façon dont les navigateurs les afficheront dans la barre d’adresse. Un navigateur va généralement (je ne l'ai pas vu arriver autrement) encoder par URL tous les caractères non valides dans une adresse entrée, donc même si Firefox décode une URL dans la barre d'adresse, le coller dans un autre navigateur devrait toujours fonctionner.

1
Jacob

Les navigateurs modernes décodent automatiquement les URL avant de les afficher sur la barre d’emplacement, mais utilisent toujours en interne l’adresse réelle, qui inclura deux codages différents pour le chemin de la ressource et du domaine.

Lorsque vous copiez l’emplacement à partir du navigateur, il copie l’adresse d’origine afin de s’assurer qu’elle agirait comme une adresse Web lorsqu’elle serait collée dans d’autres applications.

1
Tomer Cohen

Vous mélangez beaucoup de choses. Mais pour répondre à votre question: il est judicieux de toujours coder les caractères non ascii/spéciaux dans les URL, continuez ainsi. Mais vous ne pouvez rien faire sur la façon dont les navigateurs traitent les URL dans la barre d'adresse.

0
DanMan