【问题标题】:Migrating Multibyte Characters from MSSQL sever to MySQL将多字节字符从 MS SQL 服务器迁移到 MySQL
【发布时间】:2011-05-07 01:37:57
【问题描述】:

我正在编写 PHP 脚本来将数据从 Microsoft SQL Server 迁移到 MySQL,到目前为止,这一直很顺利,除了多字节字符。有人可以帮我解决这个问题。从 PHP 和 MySQL 数据库的角度来看,应该注意哪些点。

  1. 我必须对 MySQL 配置进行一些更改吗?
  2. 我是否必须在 PHP 中更改多字节字符的字符编码,如果是,如何?
  3. 我还缺少什么吗?

谢谢。

【问题讨论】:

    标签: php sql-server multibyte


    【解决方案1】:

    我最近为我们公司的网站添加了一个翻译模块。我做了以下操作以确保数据库适合多字节的优点

    1. 将编码和排序规则设置为 UTF8
    2. 确保您的 MySQL 连接配置为接受 UTF8 字符。您可以通过在传输之前运行查询SET NAMES utf8 来执行此操作。 但是,还有其他方法可以做到这一点(我添加了SET NAMES utf8,因为我就是这样做的。)

    以下主题有更多信息

    SET NAMES utf8 in MySQL?

    Whether to use "SET NAMES"

    【讨论】:

    • 看起来问题比我预期的要严重得多。我们从其中迁移内容的数据来自另一个应用程序,内部网中恰好有一个 nText 列,该列的值无法迁移,而是获取“?”。我也尝试过转换字段类型 VARCHAR ,但似乎没有什么帮助。
    • 这是我将 ntext 字段 PROCESSDETAILS 转换为 varchar 的操作: $query = "SELECT CONVERT(VARCHAR(8000),CONVERT(VARBINARY(8000),PROCESSDETAILS)) AS PROCESSDETAILS FROM PROCESSTBL" $结果 = mssql_query($query); while($row = mssql_fetch_array($result)) { echo iconv("UCS-2LE","UTF-8",$row ["ProcessDetails"]);上面的代码 sn-p 导致错误消息“不允许从数据类型 ntext 到 varbinary 的显式转换”。这个问题有解决办法吗?
    • @nv185001 您可以简单地用 PHP 编写一个页面,将数据加载到表单中,然后将其提交到新的转换脚本中。这样您就不需要直接进行服务器到服务器的转换。这取决于数据量,但您应该能够在数据验证后对其进行调整
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2010-09-18
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2011-09-25
    相关资源
    最近更新 更多