Это, очевидно, изменилось в HTML5 (см. http://dev.w3.org/html5/spec-preview/constraints.html#multipart-form-data).
Части сгенерированного ресурса multipart / form-data, которые соответствуют нефайловым полям, не должны иметь указанный заголовок Content-Type.
Так, где указан набор символов? Насколько я могу судить из алгоритма кодирования, единственное место находится в записи набора данных формы с именем _charset_ .
Если ваша форма не имеет скрытого ввода с именем _charset_ , что произойдет? Я проверил это в Chrome 28, отправив форму, закодированную в UTF-8, и одну в ISO-8859-1.и проверяю отправленные заголовки и полезную нагрузку, и я не вижу кодировку, заданную где-либо (хотя текстовая кодировка определенно изменяется). Если я включу пустое поле _charset_ в форму, Chrome заполняет его с правильнымТип кодировки. Я думаю, что любой серверный код должен искать это поле _charset_ , чтобы выяснить это?
Я столкнулся с этой проблемой при написании расширения Chrome, котороеиспользует XMLHttpRequest.send объекта FormData , который всегда кодируется в UTF-8, независимо от того, какая кодировка исходного документа .
Пусть запростело объекта будет результатом запуска алгоритма кодирования multipart / form-data с данными в качестве набора данных формы и с utf-8 в качестве явной кодировки символов.
Пусть тип mime будет объединением "multipart / form-data; ", символ пробела U + 0020," border = "и граничная строка multipart / form-data, сгенерированная алгоритмом кодирования multipart / form-data.
Как я обнаружил ранее,charset = utf-8 не указывается нигде в запросе POST, если вы не включите в форму пустое поле _charset_ , которое в этом случае автоматически заполнится "utf-8".
Это моё понимание положения вещей.Я приветствую любые исправления в моих предположениях!