J'ai un tas de chaînes dont on m'a dit qu'elles ont été encodées en utilisant la fonction rawurlencode
en PHP.Quel est le bon format de codage .NET à utiliser pour décoder une chaîne qui a été encodée à l'aide de PHP rawurlencode?
Certaines de ces chaînes contiennent des séquences codées en pourcentage pour des caractères supérieurs au codage unicode 127 - par ex. a%A0b
.
Je pense le A0
dans l'exemple ci-dessus est censé représenter un espace insécable (Unicode CodePoint 160 0xA0) mais A0
sur son propre n'est pas une séquence UTF-8 valide (tout octet avec le jeu binaire élevé (> 127) fait partie d'une séquence multiple). Ainsi, .NET le décode par défaut à ?
.
J'ai essayé quelques encodages différents. iso-8859-1
semble aller, mais je ne peux pas être sûr.
Cette chaîne codée URL contiendra des caractères non anglais, il est donc essentiel que la conversion se déroule correctement.
Quel est le codage correct à transmettre à System.Web.HttpUtility.ParseQueryString
pour décoder une chaîne qui a été codée avec rawurlencode
?
C'est la réponse dont j'avais peur. J'ai déjà (depuis posé cette question) essayé d'entrer un tas de caractères dans le système. La sortie était, dirons-nous bizarre. J'ai donc besoin de parler au développeur PHP pour le comprendre. Ma chaîne d'entrée contenait la séquence '% 22'. Le% n'a pas été encodé et donc sur la sortie il a été décodé en double citation! Pour cette raison, je pense que les problèmes vont plus loin que simple quel encodage utiliser. – DJL