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

如何将数据库转换为支持UTF-8并将其数据从旧编码转换为UTF-8?

额外的信息:我正在运行一个服务器上有很多网站,其中之一是运行WHMCS(PHP脚本来pipe理托pipe客户端)。 WHMCS有一个iPhone应用程序,我可以通过iPhone浏览它,问题是这个应用程序将只运行,如果在我的网站的一切都在UTF-8编码。

我正在使用windows-1256作为编码在我的脚本的设置,我试图改变,在一段时间UTF-8一段时间,然后改回到Windows-1256

所以,数据库中的数据是用UTF标准插入的,大部分是windows-1256

如果有人能为我清除图片,我需要转换服务器上的每个数据库还是只有一个数据库? 我应该改变什么?

如果我不得不手动做,我会做,但我需要一些专家的意见。

数据库编码通常是在创build数据库时定义的(当然对于Postgres来说)。 解决这个问题的一个方法是导出,创build一个新的数据库然后重新导入。 这个链接可能已经足够了 。

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

所以如果你有权访问源代码(应该是这样),find应用程序执行连接的位置,并将编码设置为DB代码库。 然后find应用程序或Apache设置输出编码的位置,并将其设置为UTF-8。 这应该做的伎俩。

由于WHMCS是一个商业应用程序,您应该联系供应商以获得关于如何将数据库内容从现有编码转换为UTF-8的支持 – 特别是因为并非所有的应用程序都能很好地处理UTF-8数据(经常进行sorting/整理和search受影响)。 MySQL和CentOS可能需要一些configuration,而PHP可能不会直接支持UTF-8,尽pipePHP应用程序可以使用UTF-8。

将现有的应用程序转换为UTF-8并不是一件简单的事情,尽pipe它应该可以得到一些支持。

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

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

iconv -f WINDOWS-1251 -t UTF-8 $ yourfilename.icv> $文件