HTML文件上传中的字符编码

前端之家收集整理的这篇文章主要介绍了HTML文件上传中的字符编码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的 HTML表单:
<form action="/file/import" method="POST" enctype="multipart/form-data">
  <input id="csvFile" type="file" name="file">
</form>

我在上传使用不同字符集保存的CSV文件时遇到问题.是否有可能使浏览器将任何文件转换为UTF-8并以这种方式发送到服务器?

上传最初保存在ISO-8859-2中的文件后,我尝试了几个选项并跟踪浏览器使用ngrep发送的数据:

>将enctype设置为multipart / form-data; charset = utf-8 – >这由于某种原因导致浏览器发送Content-Type:application / x-www-form-urlencoded – 就像它无法使用我指定的enctype.
>向表单标记添加属性:accept-charset =“UTF-8” – >没有效果.
>使用< Meta charset =“UTF-8”> in< head> – >没有效果.

我认为文件上传应该像这样工作.我不希望我的服务器关心不同的编码,而是以标准方式接收数据.但如果不可能,我可以以某种方式从浏览器向服务器发送有关编码的信息吗?我很感激任何建议,谢谢.

解决方法

您必须区分内容(字节)和编码(字节的解释). html文件上传功能只传输字节而不关心解释,因为它不仅限于文本文件,而且还能够传输二进制文件.由于您的服务器收到了必须处理解释的字节.

ENCTYPE =多部分/格式的数据; charset = utf-8只是添加有关charset的头信息,以便您的服务器可以处理这个.它在上传文件之前或之后不会触发任何转换.

猜你在找的HTML相关文章