我可以将我的数据库/脚本转换为 UTF-8 吗?

我可以将我的数据库/脚本转换为 UTF-8 吗?

如何转换数据库以支持 UTF-8,并将其旧数据从其所采用的任何编码转换为 UTF-8?

额外信息:我正在运行一个服务器上有许多网站,其中一个网站正在运行 WHMCS(用于管理托管客户端的 php 脚本)。WHMCS 有一个 iPhone 应用程序,我可以通过 iPhone 浏览它,问题是这个应用程序只有当我的网站中的所有内容都采用 UTF-8 编码时才会运行。

我在脚本设置中使用 windows-1256 作为编码,我尝试在某个时间点将其更改为 UTF-8 一段时间,然后将其改回 windows-1256

因此,数据库中的数据是使用 UTF 标准插入的,其中大多数是 windows-1256

如果有人能帮我弄清楚,我是否需要转换服务器上的每个数据库还是仅转换一个数据库?我应该改变什么?

如果我必须手动执行此操作,我会这样做,但我需要一些专家的建议。

答案1

数据库编码通常在创建数据库时定义(当然对于 Postgres 来说也是如此)。解决此问题的一种方法是导出、创建新数据库,然后重新导入。此链接可能足够

但是,应用程序的编码可以设置为与数据库不同。这意味着应用程序发送 UTF-8,当它读取数据库时,它会将数据库编码转换为 UTF-8。这通常在与数据库的连接上完成(查看此 PHP 函数)。

因此,如果您有权访问源代码(应该是这种情况),请找到应用程序进行连接的位置,并将编码设置为您的 DB 代码库。然后找到应用程序或 Apache 设置输出编码的位置,并将其设置为 UTF-8。这应该可以解决问题。

答案2

自从网页管理系统是一个商业应用程序,您应该联系供应商以获取有关如何将数据库内容从现有编码转换为 UTF-8 的支持 - 特别是因为并非所有应用程序都能很好地处理 UTF-8 数据(排序/整理和搜索通常会受到影响)。MySQL 和 CentOS 可能需要一些配置,而 PHP 可能不需要,因为它不直接支持 UTF-8,尽管 PHP 应用程序可以使用 UTF-8。

将现有应用程序转换为 UTF-8 并非易事,尽管在某些支持下应该是可能的。

可能有一个更简单的选项,例如编写一个仅当 iPhone 使用该页面时使用的过滤器。如果您可以保证应用程序 UI 或数据库中的任何地方都没有第 8 位设置的字符(即仅限 ASCII),您可能能够简单地在输出时将编码设置为 UTF-8,但这可能有风险。

答案3

创建数据库文件并通过以下命令将其转换为UTF-8:

iconv -f WINDOWS-1251 -t UTF-8 $你的文件名.icv > $文件

相关内容