`

MySQL 4.0 数据导入到 MySQL 5.0 可能出现的问题

    博客分类:
  • php
阅读更多

utf-8 的中文数据从 4.0 导入到 5.0 之后,PHP 读取似乎没什么异常,但是在 phpMyAdmin 里面看到的中文却都是乱码。这是因为一般 MySQL 5.0 的默认的 character_set_database 为 latin1 ,导入后的数据的 Collation 是 latin1_bin 或 latin1_swedish_ci 。这时候再用 phpMyAdmin 导出的数据也都是乱码,不能使用了。

 

 mysql> show variables like '%character%'; +--------------------------+-------------------------------------------+ | Variable_name            | Value                                     | +--------------------------+-------------------------------------------+ | character_set_client     | latin1                                    | | character_set_connection | latin1                                    | | character_set_database   | latin1                                    | | character_set_results    | latin1                                    | | character_set_server     | latin1                                    | | character_set_system     | utf8                                      | | character_sets_dir       | /data/mysql/fifteen/share/mysql/charsets/ | +--------------------------+-------------------------------------------+ 7 rows in set (0.00 sec) 

我解决这个问题的方法是先将 phpMyAdmin 的 libraries/select_lang.lib.php 文件中的 MySQL charsets map 中的(在 phpMyAdmin 2.7.0-pl2 中是第 263 行):

  1. ‘utf-8′ => ‘utf8′,

改为:

  1. ‘utf-8′ => ‘latin1′,

这样在 phpMyAdmin 里面就能正常显示 utf-8 的中文了。这样导出来的数据也就能用了。

将导出来的 sql 文件中的 character set 和 collate 分别都设成 utf8 和 utf8_general_ci ,同时把数据库的 collation 也改成 utf8_general_ci ,然后重新导到 MySQL 5.0 ,再把之前修改过的 select_lang.lib.php 改回原样,这样 phpMyAdmin 中的乱码问题就彻底解决了。

避免出现这个问题,只需在导入数据之前,先将数据库的 collation 设为 utf8_general_ci。

PHP 连接 MySQL 5.0 数据库后,最好先执行以下几句,以免因为 collation 问题而出现各种难以预见的错误:

  1. SET NAMES ‘utf8′
  2. SET CHARACTER SET ‘utf8′
  3. SET CHARACTER_SET_CLIENT = ‘utf8′
  4. SET COLLATION_CONNECTION=’utf8_general_ci’
  5. SET CHARACTER_SET_RESULTS = ‘utf8′
  6. SET CHARACTER_SET_SERVER = ‘utf8′

Updated 2006-3-13

Marco Fang 在回复里提出了另外一个很好的解决办法,我把它也贴到这里来了,谢谢! ^_^

1. mysqldump –default-character-set=latin1 foobar > foobar.sql 这样就会得出一个编码正确的档

2.更改foobar.sql内中的 latin1 字段为 utf8 (replace all latin1 -> utf8)

3.转换此 sql 档为 unicode(方便直接转换为正确的utf8编码)

4.在 phpMyAdmin 中导入 foobar.sql, 或是在 SQL 直接贴上 foobar.sql 的内容

<!--/entry-content-->

 

分享到:
评论

相关推荐

    mysql4.0和5.0驱动

    例如,如果你有一个已经存在的MySQL 4.0数据库,试图将数据导入到PowerBuilder的数据窗口,你需要确保PB配置中使用的驱动与MySQL 4.0兼容。同样,如果目标是MySQL 5.0,那么应该使用能识别5.0特性的驱动,否则可能...

    mysql -4.0.26安装包

    从4.0升级到5.0及以上版本可能需要进行一系列的转换和验证步骤,以确保数据的完整性和应用的正常运行。 总结来说,MySQL 4.0.26是一个早期版本,虽然可能缺乏一些现代数据库系统的高级功能,但对于那些需要维护旧...

    pb导入mysql5.0中中文乱码

    pb 导入 mysql5.0 中中文乱码问题解决方案 在使用 Pb 将数据导入到 MySQL 5.0 时,中文乱码问题是一个常见的问题。在本文中,我们将讨论两个解决方案,帮助开发者快速解决中文乱码问题。 解决方案一:使用 set ...

    mysql4.0升级到mysql5(4.1),解决字符集问题

    MySQL数据库系统的升级是一个重要的任务,特别是从较旧的版本如MySQL 4.0升级到5.0或4.1,因为这涉及到数据的兼容性和功能的扩展。在本例中,我们将关注如何从MySQL 4.0平稳地升级到MySQL 5.0或4.1,并解决字符集...

    C# MySQL.data.dll 各版本下载 用于连接mysql数据库 历史最全 分32位系统与64位系统

    `导入必要的命名空间,然后创建`MySqlConnection`对象,配置连接字符串,并执行SQL命令。 下面是一个简单的示例,展示如何使用`MySql.data.dll`连接到MySQL数据库: ```csharp using MySql.Data.MySqlClient; ...

    mysql for jdbc jar包(5.0和6.0)

    MySQL for JDBC是Java开发者在应用程序中连接MySQL数据库时不可或缺的组件。JDBC(Java Database Connectivity)是Java平台的标准API,允许Java程序与各种数据库进行交互。MySQL JDBC驱动,也称为MySQL Connector/J...

    中文乱码问题

    通过以上步骤,可以有效地解决使用 PowerBuilder 导入数据到 MySQL 5.0 或 MySQL 4.0 数据库时遇到的中文乱码问题。关键是确保数据在传输过程中采用统一的字符集编码,以及在数据库层面正确地设置了字符集。

    如何解决MYSQL数据中文乱码问题.docx

    在升级 MySQL 从 4.0 到 5.0 版本时,这个问题可能会更加突出,因为不同版本之间可能存在字符集支持的差异。解决这类问题需要理解数据库、服务器、客户端以及数据本身之间的字符集配置。 首先,我们来看几种常见的...

    MySQL 升级方法指南大全第1/5页

    例如,从 MySQL 3.23 直接升级到 4.1 或 5.0 可能会遇到问题,因此推荐按照 3.23 -&gt; 4.0 -&gt; 4.1 -&gt; 5.0 的顺序逐步进行。 以下介绍的三种升级方法适用于不同的情况,但都要求在同一个数据库服务器上操作: 1. **...

    mysql优化,by叶金荣

    - **4.0/4.1 vs 5.0**:从4.x到5.x,MySQL进行了许多重大改进: - **子查询优化**:增强了子查询的处理能力,减少了不必要的计算。 - **表连接优化**:提高了表连接的速度和效率。 - **支持触发器**:引入了...

    SQL语句导入导出大全

    - **MySQL**: MySQL提供了`mysqldump`命令用于数据导出,`LOAD DATA INFILE`用于数据导入,但不支持直接导出到Excel。需先导出为CSV或文本文件,然后用其他工具转换。 - **Oracle**: Oracle有`expdp`和`impdp`工具...

    zabbix监控4.4升级至5.0的详细教程

    总的来说,从Zabbix 4.4到5.0的升级是一个涉及数据备份、服务停用、版本移除、新版本安装、配置调整和数据恢复的复杂过程。每个步骤都需要仔细执行,以确保系统的稳定性和数据的安全性。同时,升级后应进行全面测试...

    OpenCms6.2千寻汉化包1.1版

    操作系统:windows2000/2003,linux JDK: JDK1.4.x,JDK1.5.x 应用服务器:tomcat5.0.x/tomcat5.5.x,weblogic,JBoss 4.0 数据库:Oracle 9.x/Oracle 10.x,MS SQL server2000,MySQL 4.0/MySQL 4.1/MySQL 5.0,...

    在Eclipse中使用JBoss数据库连接池技术

    在本场景中,我们将使用JBoss 5.0作为应用服务器,Eclipse Platform 3.4作为开发环境,MySQL 4.0作为数据库管理系统。 首先,我们需要创建一个新的Java项目。在Eclipse中,选择"File" -&gt; "New" -&gt; "Java Project",...

    DZ论坛-web服务器配置+权限设置.pdf

    - MySQL选择5.0.x版本,避免使用5.1,可能有bug。推荐使用安装版而不是绿色版。 - Zend Optimizer是用于提高PHP应用程序性能的工具,这里使用的是3.3.3版本。 - PHPMyAdmin是用于管理MySQL数据库的Web接口,方便...

    DDB从数据库到数据中心.pptx

    【DDB从数据库到数据中心】技术讲解 DDB(Distributed Database Backend)是一款由网易公司开发的分布式数据库系统,旨在解决大数据规模下的存储和处理问题。该系统自2006年起逐步发展,历经多个版本迭代,从最初的...

    OpenCms7--源代码编译安装-分享[收集].pdf

    OpenCms兼容MySQL 3.2、4.0、4.1及5.0,但推荐使用5.0或4.1,至少需要4.0。可以从MySQL官方网站http://dev.mysql.com/downloads/下载,这里选用5.0版本。安装过程中,确保按照指示正确配置MySQL服务。 **第四步:...

    商城之家JSP商城企业版 v7.0

    运 行 环 境:jdk1.5/1.4 , tomcat5.0/4.0 , mysql5.0/4.0 系 统 环 境:JSP+MYSQL 公 司 网 址:http://www.6648.com.cn 前 台 演 示:http://www.keyshop.cn 后 台 演 示:...

    众大一键采集百度贴吧内容 v4.0

    【众大一键采集百度贴吧内容 v4.0】是一款针对Discuz论坛系统设计的插件,主要用于高效地从百度贴吧抓取并导入相关数据。这款工具的出现,旨在帮助Discuz论坛管理员或运营者快速获取互联网上的热门话题,增强论坛的...

Global site tag (gtag.js) - Google Analytics