mysql导出数据库乱码怎么办

供稿:hz-xin.com     日期:2025-01-09
php 数据库 导出excel 的时候 导出成功 但是却是乱码 请问怎么解决?

你指定的PHPExcel生成的是xls格式的文件。是一种电子表格格式,这种格式一般是用excel打开处理的。直接用文本方式显示就是乱码的。但为什么是直接输出这些乱而不是下载呢?是因为你没有给输出指定头信息告诉浏览器输出的内容不是直接显示而是供下载的,浏览器所以浏览器也不懂,它只好老老实实给输出来。你试着在上面那段代码前加上如下内容:
header("Cache-Control: public");
header("Pragma: public");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type:application/download");
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=你自己指定或生成文件名.xls");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

MYSQL数据库不仅每个库有编码设置甚至是每个字段都有编码设置.
出现乱码肯定是你现在用的编码混乱造成的

解决办法:

第一步 先改数据库编码

先修改你的数据库,如果你页面用的是UTF-8编码那么你数据库内的编码也需要设置为UTF-8,每个字段都需要设置.要保持内外一致,你可以用Navicat for MySQL工具,这个工具里能看得很清除,如果表\字段很多的话你可以导出SQL语句,然后把SQL语句中相应的编码替换例如gb2312替换成utf8,然后再重新创建一个库,创建的时候字符集选择utf8的再把SQL语句导入,检查一下所有的编码都是utf8的就OK

第二步 程序修改

1\读库的时候
mysql_query("set names utf8");
2\每个页面头部加上一句
header("content-Type: text/html; charset=utf-8");
3\检查所有的编码声明是否正确

4\检查页面中现有文字所使用的编码是否正确,推荐你使用editplus在右下角会有显示UTF-8或者ANSI,要保证所有带有中文的文件打开后显示的编码集是UTF-8,如果不是的话可以将所有文件打开然后从菜单选择"文档"-"文件编码"-"文件编码(多文件)",然后选择所有的文件点确定,更改编码为UTF-8确定!

OK到此位置大功告成,所有的编码一致,绝对不会再出现乱码了,多说一句.对于MYSQL操作工具的选择本人只推荐两款,一是大家都熟悉的PHPMYADMIN 再就是Navicat for MySQL也有很多人都在用.至于MYSQL-font实在有些垃圾,有时显示出来的数据库结构和实际的都有差别....不敢苟同,另外MYSQL官方出的SQLyog对于编码的支持太差劲了,很难控制具体的编码,所以最好也不要用

  在mysql导入导出数据时经常出现中文乱码的问题,大多是因类导入导出时编码设置不一致所引起的。本文介绍了不同平台下的编码转换方法,供大家参考。
  在linux系统中默认的是utf8编码,而windows是gbk编码,如果在这二个系统间导入未经指定编码的数据,就会出现乱码。
  首先,确定导出数据的编码格式,使用mysqldump的时候需要加上--default-character-set=utf8,
  例如:
  mysqldump -uroot -p --default-character-set=utf8 dbname tablename > bak.sql
  那么导入数据时也要使用--default-character-set=utf8:
  mysql -uroot -p --default-character-set=utf8 dbname < bak.sql
  统一编码后,mysql数据迁移中的乱码问题就解决了。
  使用windows作为导出数据源,并导入 freebsd环境下的mysql库,解决方法详解。
  导出数据
  一、首先,在windows平台下mysql用作导出数据库源。
  查看字符编码的系统变量:
  代码示例:
  mysql> show variables like ‘%char%';
  +————————–+—————————-+
  | Variable_name | Value |
  +————————–+—————————-+
  | character_set_client | latin1 |
  | character_set_connection | latin1 |
  | character_set_database | latin1 |
  | character_set_filesystem | binary |
  | character_set_results | latin1 |
  | character_set_server | gbk |
  | character_set_system | utf8 |
  | character_sets_dir | D:mysqlsharecharsets |
  +————————–+—————————-+
  查看character_set_database,这里是latin1,latin1是装不了多字节字符集的。
  二、在windows下设置系统变量为utf8
  mysql>set character_set_database=utf8; ##设置默认的字符集为utf8
  三、导出数据
  mysql> select * from table into outfile ‘c:table.txt' where +条件
  这时导出了部分数据,并以txt文件存在 table.txt中。
  导入数据
  在freebsd平台下
  一、同样设置字符编码的系统变量
  代码示例:
  mysql> show variables like ‘%char%';
  +————————–+—————————-+
  | Variable_name | Value |
  +————————–+—————————-+
  | character_set_client | latin1 |
  | character_set_connection | latin1 |
  | character_set_database | latin1 |
  | character_set_filesystem | binary |
  | character_set_results | latin1 |
  | character_set_server | gbk |
  | character_set_system | utf8 |
  +————————–+—————————-+
  mysql>set character_set_database=utf8; ##设置默认的字符集为utf8
  二、转载数据
  mysql>load data local infile ‘/home/table.txt' into table `table`;
  至此、条件数据完整导入导出,并处理了乱码的情况。
  总之,两台mysql服务器导入导出时,一定要确保两台服务器的character_set_database参数相同,这样才能防止一些乱码的情况。当然我们还可以使用其他字符集,如gbk来进行调整。
  解决方法三
  乱码解决方法
  导入数据后,在命令行查看发现中文乱码
  使用以下命令查看系统字符集
  show variables like 'char%';
  如果不是GBK或UTF8,则停止mysql服务,然后到安装目录修改my.ini文件,
  将文件中下面的变量改成如下,如果没有这个变量则增加这些变量
  [mysql]
  default-character-set=gbk
  [mysqld]
  character-set-server=utf8
  重新启动服务,重新导入数据,如果还乱码,只要把导入与导出编码统一即可解决问题。

' 是编码方式不兼容,改成UTF-8编码就行了
SETcharacter_set_connection='utf8',character_set_results='utf8',character_set_client='utf8'

设置一下数据库编码格式为 UTF-8

Mysqldump导出乱码问题
解决数据库导出中文出现乱码的问题,首先需关注数据库和客户端的编码设置。在MySQL中查询相关编码参数,确保字符设置正确。一旦发现返回结果在终端显示出乱码,问题可能在于`character_set_results`的配置不妥,应检查或调整相关设置,或直接在MySQL配置文件`my.ini`中进行永久修改。在尝试导出时,应考虑到可能...

mysql导出数据库乱码怎么办
重新启动服务,重新导入数据,如果还乱码,只要把导入与导出编码统一即可解决问题。

mysql导出数据库乱码怎么办
打开mysql的安装目录,找到my.ini这个文件,用记事本打开或是用vi编辑 default-character-set=latin1 为 default-character-set=GBK 然后在命令行设为为:set names gbk;

三种解决mysql乱码的方法
首先,要解决数据库导入数据的乱码问题,我们可以将默认的字符集更改为utf-8。具体步骤如下:1. 查看数据库默认的字符集是什么。2. 查询所有默认字符集,其中character_set_database和character_set_server的字符集默认为latin1。3. 使用以下两行代码将其更改为utf-8:4. 进行字符集查询,得到以下结果...

mysql数据库的汉字出现乱码
在实际操作中,可以尝试以下步骤来解决乱码问题:1. 确认客户端支持的编码格式是否与数据库一致。2. 在数据库创建时,明确指定编码格式为UTF-8,以适应多语言环境的需要。3. 在进行数据导入或导出时,注意保持编码格式的一致性,避免在不同系统间进行不兼容的编码转换。4. 对于显示问题,可以在客户端...

实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法?
1、确保phpmyadmin导出的数据中文显示正常,进入phpmyadmin界面,将语言选为中文simple-chinese(注意非simple-chinesegb2312),再导出sql中文就能正常显示。2、修改导入出现乱码的LINUX主机的mysql设置vi\/etc\/my.cnf[mysqld]添加default-character-set=utf8#设置默认字符集为utf8init_connect='SETNAMESutf8′#...

mysql数据库中乱码怎么解决
1、修改安装文件根目录下的my.ini文件:搜索字段default-character-set,设置其值为utf8\/gbk之一(注意设置utf8的时候不能设成utf-8)再去重启MySQL服务器 如果还是出现乱码,接着执行下面操作 2、修改数据库编码 在安装目录的data目录下找到你出现乱码的数据库对应的文件夹(这个文件夹即是你这个数据库...

处理MySQL乱码问题解决方案mysql乱码
Mysql乱码问题通常是由于编码设置不支持UTF-8造成的,显示乱码是由于设置未将数据表编码设置为UTF-8,从而影响到中文显示,所以许多用户在使用mysql时经常会遇到乱码问题,本文给出了修正mysql数据库乱码的解决方案。首先,为了解决mysql乱码问题,它的字符集需要设置为UTF-8格式,可以通过MySQL客户端连接服务...

使用MySQL导入数据时出现乱码的两种解决方法
使用MySQL导入数据时出现乱码的两种解决方法如下:1、添加 –default-character-set 先检查一下,目标数据编码。 56云 分享 使用目标库编码导入数据,如下:2、修改数据库编码 此教程方法必须谨慎使用,需初始化数据库或将企业数据库技术可以覆盖情况下使用,否则导致数据库出现乱码 ...

mysql出现乱码问题如何解决
1、修改安装文件根目录下的我的文件,搜索字段默认特征设置,设置其值为中国字符编码或国际编码之一,重启MySQL服务器;2、修改数据库编码,在安装目录的根目录下找到出现乱码的数据库对应的文件夹,进入文件夹,找到此数据库的编码配置文件,进行修改,重启MySQL服务器;3、备份原数据库数据,直接删除此数据...