【问题标题】:PHP - CSV to MySQL to frontend, and back to CSV, best encoding / string function practices?PHP - CSV 到 MySQL 到前端,然后返回到 CSV,最佳编码/字符串函数实践?
【发布时间】:2011-04-06 08:41:05
【问题描述】:

我有一个使用 CSV 文件来维护 MySQL 数据库中的数据(产品)的场景。基本上客户维护产品的步骤如下:

  • 在 CSV 文件的预定义列中添加项目
  • 在后端上传 CSV
  • PHP 脚本迭代 CSV 数据
  • 数据经过验证/清理并发送到 MySQL 数据库

当客户端编辑、添加或删除项目时,同样适用于相反的情况,但是这也可以直接从后端完成。我遇到了某些字符在数据库或下载的电子表格中没有正确显示的问题,所以我的问题是:

一般来说,在以 CSV 文件的形式添加和检索数据时,有哪些好的编码或字符串函数可以应用于数据?我的 MySQL 连接编码是 UTF-8,但是我尝试使用 UTF-8 字符集保存 CSV 文件,但似乎 Excel 会自动对其应用默认的 Windows-1252 编码,从而破坏所有 ym UTF-8 字符。

Open Office.org 等应用程序会提示您输入导入字符集,如果设置为 Unicode UTF-8,它会显示正常。显然不能依赖客户端总是使用 Excel 或 Open Office,那么 PC / CSV > MySQL > 回到 PC / CSV 工作的好的解决方案是什么?

欢迎和赞赏所有建议。

西蒙

【问题讨论】:

  • 建议阅读这篇文章以开始使用 - joelonsoftware.com/articles/Unicode.html
  • @David - 谢谢,我读过那篇文章 - 太棒了。我更喜欢在 CSV > MySQL 和后台流程中遵循的流程。谢谢
  • 我建议看看 datamapper 设计模式。
  • @David - 那究竟是什么,它对我有什么帮助?
  • 它是在两个源之间映射数据的通用解决方案,在您的情况下是 CSV 文件和数据库。我已经拉起了这篇文章,快速谷歌搜索会找到更多。 devshed.com/c/a/PHP/…

标签: php mysql character-encoding fgetcsv


【解决方案1】:

所以在cmets之后回答。对http://www.joelonsoftware.com/articles/Unicode.html 有一个很好的理解,看看如何实现一个数据映射器模式,关于它的示例文章在这里-http://www.devshed.com/c/a/PHP/Implementing-the-Data-Mapper-Design-Pattern-in-PHP-5

【讨论】:

    【解决方案2】:

    如果我理解正确,您正在尝试使用 Excel 打开、编辑和保存 CSV 文件。 这通常是一个坏主意for a whole range of reasons,包括它不允许您指定导出到的 csv 文件的详细信息。

    一种故障安全但更麻烦的方法可能是将数据加载到 Access 中,然后在那里处理数据。 Access 允许使用更高级的设置(例如编码和分隔符)“导出到文本文件”。

    【讨论】:

    • 那不是我想做的,不。正如问题所述,我正在从一系列 MySQL 表中导出数据(以编程方式),以便在任何电子表格应用程序(如 MS Excel、Apache Open Office 等)中打开。当时(3 年前!)David Gillen 的链接帮助很大现在对字符集以及如何对其进行编码、解码和转换有了全面的了解。感谢您的意见,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2013-04-22
    相关资源
    最近更新 更多