【问题标题】:character encoding in HTML file uploadHTML文件上传中的字符编码
【发布时间】:2016-04-19 15:52:12
【问题描述】:

我有一个简单的 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 跟踪浏览器发送的数据:

  1. enctype 设置为multipart/form-data; charset=utf-8 -> 这由于某种原因导致浏览器发送Content-Type: application/x-www-form-urlencoded - 就像它未能使用我指定的enctype。

  2. form 标记中添加一个属性:accept-charset="UTF-8" -> 无效。

  3. &lt;head&gt; 中使用&lt;meta charset="UTF-8"&gt; -> 无效。

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

【问题讨论】:

    标签: html forms file-upload utf-8 character-encoding


    【解决方案1】:

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

    enctype=multipart/form-data; charset=utf-8 只是添加有关字符集的标头信息,以便您的服务器可以处理此问题。它不会在上传文件之前或之后触发任何转换。

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2016-05-26
      • 2014-12-25
      • 1970-01-01
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多