`
csc365kl
  • 浏览: 56521 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

修复 mysql 页面正常 数据库文件sql乱码

 
阅读更多

msql 页面正常 数据库文件sql乱码

如果你的库原来是gbk编码,则把以下代码存为php文件,记得把下面的数据库名跟数据库帐号密码填上
<?php
define('DB_NAME', 'putyourdbnamehere');    // 数据库名
define('DB_USER', 'usernamehere');     // MySQL用户名
define('DB_PASSWORD', 'yourpasswordhere'); // 密码
define('DB_HOST', 'localhost');    // 很大可能你无需修改此项
function gbk_DB_Converter_DoIt() {
 $tables = array();
 $tables_with_fields = array();
 // Since we cannot use the WordPress Database Abstraction Class (wp-db.php),
 // we have to make an a stand-alone/direct connection to the database.
 $link_id = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die('Error establishing a database connection');
 mysql_select_db(DB_NAME, $link_id);
 // Gathering information about tables and all the text/string fields that can be affected
 // during the conversion to gbk.
 $resource = mysql_query("SHOW TABLES", $link_id);
 while ( $result = mysql_fetch_row($resource) )
  $tables[] = $result[0];
 if ( !empty($tables) ) {
  foreach ( (array) $tables as $table ) {
   $resource = mysql_query("EXPLAIN $table", $link_id);
   while ( $result = mysql_fetch_assoc($resource) ) {
    if ( preg_match('/(char)|(text)|(enum)|(set)/', $result['Type']) )
     $tables_with_fields[$table][$result['Field']] = $result['Type'] . " " . ( "YES" == $result['Null'] ? "" : "NOT " ) . "NULL " .  ( !is_null($result['Default']) ? "DEFAULT '". $result['Default'] ."'" : "" );
   }
  }
  // Change all text/string fields of the tables to their corresponding binary text/string representations.
  foreach ( (array) $tables as $table )
   mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET binary", $link_id);
  // Change database and tables to gbk Character set.
  mysql_query("ALTER DATABASE " . DB_NAME . " CHARACTER SET gbk", $link_id);
  foreach ( (array) $tables as $table )
   mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET gbk", $link_id);
  // Return all binary text/string fields previously changed to their original representations.
  foreach ( (array) $tables_with_fields as $table => $fields ) {
   foreach ( (array) $fields as $field_type => $field_options ) {
    mysql_query("ALTER TABLE $table MODIFY $field_type $field_options", $link_id);
   }
  }
  // Optimize tables and finally close the mysql link.
  foreach ( (array) $tables as $table )
   mysql_query("OPTIMIZE TABLE $table", $link_id);
  mysql_close($link_id);
 } else {
  die('<strong>There are no tables?</strong>');
 }
 return true;
}
gbk_DB_Converter_DoIt();
?>
随便放到一个可以访问到库的php站点下运行即可。
 
如果你的库是utf-8编码,则运行以下代码,记得把下面的数据库名跟数据库帐号密码填上
<?php
define('DB_NAME', 'putyourdbnamehere');    // 数据库名
define('DB_USER', 'usernamehere');     // MySQL用户名
define('DB_PASSWORD', 'yourpasswordhere'); // 密码
define('DB_HOST', 'localhost');    // 很大可能你无需修改此项

function UTF8_DB_Converter_DoIt() {
$tables = array();
$tables_with_fields = array();

// Since we cannot use the WordPress Database Abstraction Class (wp-db.php),
// we have to make an a stand-alone/direct connection to the database.
$link_id = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die('Error establishing a database connection');
mysql_select_db(DB_NAME, $link_id);

// Gathering information about tables and all the text/string fields that can be affected
// during the conversion to UTF-8.
$resource = mysql_query("SHOW TABLES", $link_id);
while ( $result = mysql_fetch_row($resource) )
$tables[] = $result[0];

if ( !empty($tables) ) {
foreach ( (array) $tables as $table ) {
$resource = mysql_query("EXPLAIN $table", $link_id);
while ( $result = mysql_fetch_assoc($resource) ) {
if ( preg_match('/(char)|(text)|(enum)|(set)/', $result['Type']) )
$tables_with_fields[$table][$result['Field']] = $result['Type'] . " " . ( "YES" == $result['Null'] ? "" : "NOT " ) . "NULL " .  ( !is_null($result['Default']) ? "DEFAULT '". $result['Default'] ."'" : "" );
}
}

// Change all text/string fields of the tables to their corresponding binary text/string representations.
foreach ( (array) $tables as $table )
mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET binary", $link_id);

// Change database and tables to UTF-8 Character set.
mysql_query("ALTER DATABASE " . DB_NAME . " CHARACTER SET utf8", $link_id);
foreach ( (array) $tables as $table )
mysql_query("ALTER TABLE $table CONVERT TO CHARACTER SET utf8", $link_id);

// Return all binary text/string fields previously changed to their original representations.
foreach ( (array) $tables_with_fields as $table => $fields ) {
foreach ( (array) $fields as $field_type => $field_options ) {
mysql_query("ALTER TABLE $table MODIFY $field_type $field_options", $link_id);
}
}

// Optimize tables and finally close the mysql link.
foreach ( (array) $tables as $table )
mysql_query("OPTIMIZE TABLE $table", $link_id);
mysql_close($link_id);
} else {
die('<strong>There are no tables?</strong>');
}

return true;
}
UTF8_DB_Converter_DoIt();
?>
运行完之后登录phpmyadmin,查询下就知道乱码已经恢复!
分享到:
评论

相关推荐

    MySQL乱码解决方案数据库乱码

    在处理MySQL数据库时,遇到字符集编码不一致导致的数据乱码问题非常常见。这不仅会影响数据的正确显示,还可能导致数据丢失或损坏。根据提供的标题、描述、标签以及部分内容来看,本文将围绕MySQL乱码问题进行深入...

    解决MYSQL数据库乱码问题

    ### 解决MYSQL数据库乱码问题 #### 背景与问题描述 在使用Navicat连接MySQL数据库的过程中,用户可能会遇到一个常见的问题:乱码。这种情况通常发生在字符集设置不一致或者配置不当的情况下,尤其是在使用MySQL ...

    ASP连MySQL数据库乱码问题

    1. **字符编码问题**:当ASP页面和MySQL数据库的字符编码不一致时,可能会导致乱码。常见的编码格式有GBK、UTF-8等。确保ASP页面和MySQL数据库的字符集匹配至关重要。在MySQL中,可以在创建数据库或表时指定字符集,...

    mysql备份文件注释乱码处理工具

    MySQL数据库在进行备份时,经常会遇到一个问题:当数据库中的数据包含非ASCII字符,特别是中文字符时,如果数据库的默认字符集是GBK,而备份文件是以UTF-8编码保存的,那么在查看或恢复这些备份文件时,注释部分可能...

    mysql数据库乱码之保存越南文乱码解决方法

    在本案例中,我们探讨的是如何解决MySQL数据库在保存越南文时出现的乱码问题。 首先,我们要理解字符集的概念。字符集决定了数据库、表以及字段如何存储和显示字符。GBK字符集主要支持简体中文,而对于其他如越南文...

    数据库编程之编码转换实例--乱码分析

    1. 数据库设置:数据库管理系统(如MySQL、Oracle、SQL Server)自身有默认的字符集设置。如果数据库的默认编码与应用程序的编码不一致,可能导致乱码。 2. 连接字符串:在连接数据库时,我们需要指定使用的字符集...

    MySQL导入导出数据库.pdf

    在MySQL客户端中,可以通过`source`命令直接导入SQL文件。首先登录MySQL,然后输入: ``` source /path/to/dump_file.sql; ``` 确保`/path/to/dump_file.sql`是你的SQL文件的实际路径。 2. 使用mysql命令: 与`...

    MySQL数据库跨越式升级中乱码问题分析及解决.pdf

    MySQL数据库在进行跨越式升级时,可能会遇到中文乱码问题,这主要是由于字符集设置不当导致的。MySQL在不同版本之间对多语言支持的改变,特别是从4.0.x到4.1及以上版本,引入了对Unicode(如UTF-8)更全面的支持,...

    解决mysql乱码问题全解决

    在数据库操作过程中,遇到乱码问题是较为常见的现象之一,尤其是对于频繁更换虚拟主机环境的用户来说,由于不同的服务提供商可能采用不同的MySQL版本,这很容易导致数据导入后出现字符编码不匹配的问题,从而引发...

    MYSQL备份乱码

    MySQL数据库在进行备份和恢复的过程中,可能会遇到乱码问题,这通常是由于编码设置不一致或者在处理文本数据时没有正确地处理字符集导致的。在本文中,我们将深入探讨MySQL备份乱码的原因、如何预防以及如何解决这类...

    excel导入mysql数据库实例

    以下是一个关于“Excel导入MySQL数据库实例”的详细知识讲解。 首先,了解基本概念: 1. Excel:Microsoft Excel是一款电子表格程序,允许用户创建、编辑和共享包含数字、文本和公式的数据。 2. MySQL:MySQL是一种...

    mysql中文乱码解决方案

    在使用MySQL数据库的过程中,可能会遇到中文显示乱码的问题。中文乱码问题通常是由于字符集设置不正确导致的。为了解决这个问题,我们需要从多个角度进行排查与解决,包括检查系统环境变量、MySQL配置文件、客户端...

    mysql解决乱码问题

    在使用MySQL数据库的过程中,可能会遇到字符集编码不匹配导致的数据乱码问题,尤其是在处理中文字符时。本文将详细介绍如何解决MySQL中出现的中文乱码问题,确保数据能够正确地被存储、检索和显示。 #### 一、MySQL...

    mysql数据库安装及其使用教程汇编.pdf

    在使用过程中,了解SQL基础语句,如`CREATE DATABASE`,`USE`,`CREATE TABLE`,`INSERT INTO`,`SELECT`等,将帮助你更好地管理和操作MySQL数据库。同时,学习备份和恢复数据的方法也是十分重要的,以防数据丢失。...

    导入大文件到数据库最快的方法

    针对这个主题,我们将深入探讨“导入大文件到数据库最快的方法”,特别是针对MySQL数据库,并且会特别关注如何在虚拟主机环境中处理中文乱码问题。 首先,让我们关注标题中的关键词——"bigdump.php"。这是一个开源...

    MySql乱码问题的解决方法

    在处理数据库应用时,我们常常会遇到字符集编码的问题,尤其是在使用MySQL数据库时,由于编码设置不当导致的数据乱码现象更是屡见不鲜。本文将详细介绍MySQL乱码问题产生的原因及解决方案,帮助读者更好地理解和解决...

    mysql57驱动jar包,mysql8.0.31版本 Connector/J 8.0.31

    MySQL是世界上最受欢迎的开源数据库系统之一,而Connector/J则是MySQL官方提供的用于Java应用程序与MySQL数据库交互的驱动程序。本文将详细介绍MySQL 5.7驱动(实际上指的是MySQL Connector/J 8.0.31版本),以及...

    MySQL乱码总结

    本文将深入探讨MySQL数据库出现乱码的原因、排查思路、解决方法及相关示例,帮助读者更好地理解和处理此类问题。 #### 二、MySQL字符集设置层级 MySQL中字符集的设置具有层次性,主要包括以下几个级别: 1. **...

    UTF8-fix:使用UTF-8字符修复MySQL数据库-开源

    标题中的"UTF8-fix:使用UTF-8字符修复MySQL数据库-开源"指的是一种解决方案,用于处理MySQL数据库中UTF-8编码不正确的问题。在数据库操作中,如果字符集设置不当或数据导入过程中出现问题,可能会导致非预期的乱码...

Global site tag (gtag.js) - Google Analytics