【问题标题】:how to migrate to utf8 for a multi-customer shared codeBase in PHP如何在 PHP 中为多客户共享代码库迁移到 utf8
【发布时间】:2014-10-13 16:15:03
【问题描述】:

在我们公司,我们使用专有的 CMS, 该 CMS 用于近一千个网站,使用时间约为 15 年。 (它已经进化但功能非常丰富)

到目前为止,他一直使用 iso-8859-1 作为字符集,但在一个项目中必须使用 utf-8。

我的问题:

  1. 你觉得这种做法好不好(维持一个SVN版本,自动转换成utf8搜索/替换有问题的php函数并在那里做一些魔术)。
  2. 你以前做过这种进化吗,对你有什么危害?

TLDR 信息:

  • 我们 CMS 的核心是集中式 (SVN) 并部署 (rsynch) 在我们每台服务器上的特定路径上,该路径位于每个网站的包含路径中。
  • 每个项目的数据库都不同(但核心表的结构相同)。
  • 每个网站都使用一个 document_root 保存网站的具体文件(媒体、js、特定 PHP 代码)

在这种配置中,我们不能一次迁移每个网站(即:因为有本地代码)。 所以我想制作我们核心的两个版本:一个在 iso-8859-1 中,另一个在 utf8 中。 从现在开始,我想我要在我们的部署系统上开发一个脚本,这个脚本将在 rsynch-ing 之前创建一个我们核心的 utf8 编码副本。

例如,我担心的是 PHP 中所有不会被调用的“mb_”东西,所以我必须搜索/替换每个 php 本机函数,以将其替换为将使用的自定义函数"mb_" 版本,如果需要的话(此外,这些函数的重载必须在 php.ini 文件中,不能在特定网站的 .htaccess 中定义(source))

PS : 对不起我的英语不好,这不是我的母语:(

【问题讨论】:

    标签: php utf-8 character-encoding iso-8859-1 file-conversion


    【解决方案1】:

    这就是我的处理方式:

    • 每台服务器要么是 iso-8859-1 要么是 utf-8,并且有专用的 conf(即:mbstring.func_overload)
    • 在每次部署之前,一个脚本会创建一个 iso 版本的副本并将其转换为 utf8
    • 每台服务器获取 utf-8 或 iso-8859-1 源代码

    对于每个单独的 CMS,都有一个转换工具,它可以转换文件系统、数据库字符集/排序规则、配置(即:使用 utf8 连接到 mysql)、....

    对于 utf8_encode 等不兼容的函数,我搜索/替换为一个函数,如果服务器是 utf8,则该函数负责不调用该函数

    【讨论】:

      猜你喜欢
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-05
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多