gpt4 book ai didi

php - 处理上传的不同编码的文本文件的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 13:32:27 26 4
gpt4 key购买 nike

我们的 PHP 应用程序内部使用 UTF-8,并且我们对 .csv 文件和固定宽度(文本)文件进行处理。我们编写了一些不错的库来处理这些文件(本质上是类)。

我们最近增加了管理员上传这些类型文件的功能,以便可以跨多个操作系统处理这些文件并快速遇到问题。我们很快意识到,正在读取的文件与我们的应用程序具有不同的编码(即 Windows-1252 或 ISO-8859)。

由于无法控制提交给我们的文件编码,我的问题是;处理上传的不同编码的文本文件的最佳方法是什么?目前我能想到两种解决方案:

  • 收到文件后,检测其编码并将其转换为 UTF-8,然后重新保存。系统的其余部分只需要识别 UTF-8 并且可以忽略“编码”问题。
  • 更改 csv/固定宽度库,使它们能够自行识别编码

我也考虑了这些的优点和缺点:

  • 转换输入可以使其余库更小并减少重复,但在处理方面似乎很浪费
  • 让库内部了解 - 这似乎涉及更多代码,但可能会更快

请问有什么想法吗?

编辑:我真的很想知道在架构上应该在哪里应用字符编码/转换 - 是在输入点还是在使用文件期间?

最佳答案

这很棘手,并且没有完美的解决方案。

例如,phpMyAdmin 为用户提供了指定上传文件编码的可能性。鉴于所有自动检测方法都不是 100% 可靠,如果可能的话,这是 IMO 的最佳方法。

导入对话框允许用户选择正确的编码,同时预览数据在该编码中的样子,这可能是最佳选择。

实现这一点的方法可能是

  • 接收上传的文件并将其存储在临时文件中

  • 显示一个对话框,其中包含最重要编码的下拉选择

  • 有一个 iframe,当下拉列表中的选定值发生变化时,使用 iconv() 转换上传文件的内容(源 = 所选编码;目标 = utf-8)并显示预览。

  • 当用户选择编码时,执行最后的 iconv()并将文件存储为 UTF-8。

关于php - 处理上传的不同编码的文本文件的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5127763/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com