Quel est le codage par défaut, il faut utiliser pour décoder la multiparti / format-données si aucun chariot n'est donné? RFC2388 States:
4.5 Charket de texte dans les données de formulaire P>
Chaque partie d'un multiparti / forme-formes est censée avoir un contenu taper. Dans le cas où un élément de champ est un texte, le ménage Le paramètre pour le texte indique le codage de caractères utilisé. P>
Par exemple, une forme avec un champ de texte dans lequel un utilisateur a tapé 'Joe doit
100 'Où est le symbole de l'euro pourrait avoir former des données retournées comme: p> --AaB03x content-disposition: form-data; name="field1" content-type: text/plain;charset=windows-1250 content-transfer-encoding: quoted-printable>> Joe owes =80100. --AaB03x
3 Réponses :
La branche de caractères par défaut pour http 1.1 est ISO-8859-1 (Latin1), Je devinerais que cela s'applique également ici. P>
3.7.1 La canonicalisation et le texte par défaut p> blockQuote>
- Snip - P>
Le paramètre "Charset" est utilisé avec certains types de support pour définir le jeu de caractères (section 3.4) des données. Lorsqu'aucun paramètre Charset explicite n'est fourni par l'expéditeur, les sous-types de média du type "Texte" sont définis pour avoir une valeur de caractères par défaut de "ISO-8859-1" lorsqu'il est reçu via http. Les données dans des ensembles de caractères autres que "ISO-8859-1" ou ses sous-ensembles doivent être étiquetés avec une valeur de caractères appropriée. Voir la section 3.4.1 pour les problèmes de compatibilité. P> blockQuote>
Ceci apparemment a changé dans HTML5 (voir http: //dev.w3.org/html5/spec-preview/constraintins.html#multipar-form-Data ). P>
Les parties de la ressource générée multipart / form-données correspondant aux champs non-fichiers ne doivent pas avoir d'en-tête de type contenu spécifié. P> blockQuote>
Alors, où est le jeu de caractères spécifié? Pour autant que je puisse dire à l'algorithme de codage, le seul endroit est dans une entrée de jeu de données de formulaire nommée _charset _ em>. P>.
Si votre formulaire n'a pas d'entrée cachée nommée _charset _ em>, que se passe-t-il? J'ai testé cela dans le chrome 28, envoyé un formulaire codé dans UTF-8 et un dans ISO-8859-1 et inspectant les en-têtes et la charge utile envoyés, et je ne vois pas de brict donné nulle part (même si le texte codant définitivement change ). Si j'insplude un champ vide _charset _ em> dans le formulaire, Chrome renseigne qu'avec le type de caractères correct. Je suppose que tout code côté serveur doit rechercher que _charset _ em> champ pour le comprendre? P>
J'ai couru dans ce problème lors de l'écriture d'une extension chromée qui utilise XMLHTTPQUEST.SEND d'un objet formdata em>, qui est toujours codé dans UTF-8, quel que soit le codage du document source, est . P>
Laissez l'organisme d'entité de la demande Soyez le résultat de l'exécution de l'algorithme de codage de données multiparti / formulaire avec des données comme définie de données de formulaire et avec UTF-8 comme codage de caractères explicite. P>
Soit MIME Type Soyez la concaténation de "Multipart / Form-Data"; ", un caractère d'espace U + 0020," limite = "et la chaîne de limite de données multipart / formulaire générée par l'algorithme de codage multipart / formulaire . p> blockQuote>
Comme je l'ai trouvé plus tôt, Charset = UTF-8 n'est spécifié nulle part dans la requête postale, sauf si vous n'incluez pas un champ vide _chakset _ em> dans le formulaire, qui dans ce cas sera automatiquement renseigné avec " UTF-8 ". P>
Ceci est ma compréhension de l'état des choses. Je me félicite des corrections à mes hypothèses! P>
Exactement le même problème pour moi, mais la solution n'a pas fonctionné. Ce que je reçois, c'est une partie de la charge utile avec nom code> défini sur
charset code>, mais aucune déclaration du tout. Ceci est mon entrée:
@Cksen, apparemment, vous devez utiliser " _Charset _ b>"
Merci à l'explication détaillée de @wlman.
Quelques informations ici: P>
Télécharger la demande de téléchargement Fragment: P>
------WebKitFormBoundarydZAwJIasnBbGaUqM Content-Disposition: form-data; name="file"; filename="xxx.txt" Content-Type: text/plain