搜档网
当前位置:搜档网 › PHP输出中文乱码问题

PHP输出中文乱码问题

PHP输出中文乱码问题
PHP输出中文乱码问题

PHP中文乱码是PHP开发中的常见问题之一。PHP中文乱码有时发生在网页本身,有些产生在于MySQL交互的过程中,有时与操作系统有关。下面进行一番总结。

一.首先是PHP网页的编码

1. php文件本身的编码与网页的编码应匹配

a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。

b. 如果欲使用utf-8编码,那么php要输出头:header(“Content-Type: text/html; charset=utf-8"),静态页面添加,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用session就会出问题,可用editplus来保存,在editplus中,工具->参数选择->文件->UTF-8签名,选择总是删除,再保存就可以去掉BOM信息了。

2. php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码。

二.PHP与Mysql的数据交互

PHP与数据库的编码应一致

1. 修改mysql配置文件my.ini或https://www.sodocs.net/doc/aa12851561.html,f,mysql最好用utf8编码

[mysql]

default-character-set=utf8

[mysqld]

default-character-set=utf8

default-storage-engine=MyISAM

在[mysqld]下加入:

default-collation=utf8_bin

init_connect='SET NAMES utf8'

2. 在需要做数据库操作的php程序前加mysql_query("set names '编码'");,编码和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那mysql编码就是utf8,这样插入或检索数据时就不会出现乱码了

三.PHP与操作系统相关

Windows和Linux的编码是不一样的,在Windows环境下,调用PHP的函数时参数如果是utf-8编码会出现错误,比如move_uploaded_file()、filesize()、readfile()等,这些函数在处理

上传、下载时经常会用到,调用时可能会出现下面的错误:

Warning: move_uploaded_file()[function.move-uploaded-file]:failed to open stream: Invalid argument in ...

Warning: move_uploaded_file()[function.move-uploaded-file]:Unable to move '' to '' in ...

Warning: filesize() [function.filesize]: stat failed for ... in ...

Warning: readfile() [function.readfile]: failed to open stream: Invalid argument in ..

在Linux环境下用gb2312编码虽然不会出现这些错误,但保存后的文件名出现乱码导致无法读取文件,这时可先将参数转换成操作系统识别的编码,编码转换可用mb_convert_encoding(字符串,新编码,原编码)或iconv(原编码,新编码,字符串),这样处理后保存的文件名就不会出现乱码,也可以正常读取文件,实现中文名称文件的上传、下载。

其实还有更好的解决方法,彻底与系统脱离,也就不用考虑系统是何编码。可以生成一个只有字母和数字的序列作为文件名,而将原来带有中文的名字保存在数据库中,这样调用move_uploaded_file()就不会出现问题,下载的时候只需将文件名改为原来带有中文的名字。实现下载的代码如下

header("Pragma: public");

header("Expires: 0");

header("Cache-Component: must-revalidate, post-check=0, pre-check=0");

header("Content-type: $file_type");

header("Content-Length: $file_size");

header("Content-Disposition: attachment; filename=\"$file_name\"");

header("Content-Transfer-Encoding: binary");

readfile($file_path);

$file_type是文件的类型,$file_name是原来的名字,$file_path是保存在服务上文件的地址。

四.再来总结一下为什么会乱码

一般来说,乱码的出现有2种原因,首先是由于编码(charset) 设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312 编码的,却以UTF-8 编码打开再保存。要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码:

1、文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的。记事本和Dreamweaver 在打开页面时候会自动识别文件编码因而不太会出问题。而ZendStudio却不会自动识别编码,它只会根据首选项的配置固定以某种编码打开文件,如果工作时候一不注意,用错误编码打开文件,做了修改之后一保存,乱码就出现了(我深有体会)。

2、页面申明编码:在HTML代码HEAD里面,可以用 来告诉浏览器网页采用了什么编码,目前中文网站开发中XXX主要用的是GB2312和UTF-8 两种编码。

3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。知道了WEB开发中哪些地方涉及到了编码,也就知道了乱码产生的原因:上述3项编码设置不一致,由于各种编码绝大部分是兼容ASCII的,所以英文符号不会出现,中文就倒霉了。

五.决战一些常见的错误情况与解决:

1、数据库采用UTF8 编码,而页面申明编码是GB2312 ,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:mysql_query("SET NAMES GBK"); 来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8 编码的话,可以用:mysql_query("SET NAMES UTF8");

注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。

注:事实上MYSQL的数据输入输出比上面讲的更复杂一些,MYSQL配置文件my.ini中定义了2个默认编码,分别是[client]里的default -character-set和[mysqld] 里的default-character-set 来分别设定默认时候客户端连接和数据库内部所采用的编码。我们上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client,来告诉MYSQL服务器接受到的客户端数据是什么编码的,而不是采用默认编码。

2、页面申明编码与文件本身编码不一致,这种情况很少发生,因为如果编码不一致美工做页面时候在浏览器看到的就是乱码了。更多时候是发布以后修改一些小BUG,以错误编码打开页面然后保存导致的。或者是用某些FTP软件直接在线修改文件,比如CuteFTP,由于软件编码配置错误而导致转换错了编码。

3、一些租用虚拟主机的朋友,明明上述3项编码都设置正确了还是有乱码。比方说网页是GB2312 编码的,IE等浏览器打开却总是识别成UTF-8 ,网页HEAD里面已经申明是GB2312 了,手动修改浏览器编码为GB2312 后页面显示正常。产生原因是服务器Apache 设定了服务器全局的默认编码,在httpd.conf里面加了AddDefaultCharset UTF-8 。这时候服务器会首先发送HTTP头给浏览器,其优先级比页面里申明编码高,自然浏览器就识别错了。解决办法有2个,请管理员在配置文件自己的虚机里加上一条AddDefaultCharset GB2312 来覆盖全局配置,或者在自己目录的.htaccess里配置。

总结:总之一句话,要解决PHP中文乱码最好最快的解决办法就是,页面申明的编码与数据库内部编码一致,如果页面申请的页码与数据库内部编码不一致时,就设定连接编码,mysql_query("SET NAMES XXX "); XXX为连接编码.一定可以解决乱码的问题.

mysql乱码处理

用MS SQL和oracle9 太吃内存,有点大,全给卸载了. 安装了mysql占内存小,方便使用! version:mysql-essential-5.1.36 在MySQL Command Line Client显示中文一切正常; 在eclipse中新工程,连接到mysql,读取一个表显示: 代码: package com.mch.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Mysql1 { public static void main(String[] args) { String url ="jdbc:mysql://localhost/test"; String user="root"; String password="******"; try { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); Connection conn= DriverManager.getConnection(url,user,password); Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("select * from pet"); while(rs.next()){ System.out.print("name:" + rs.getString(1)); System.out.print("\t所有者:" + rs.getString(2)); System.out.print("\tbirth:" + rs.getString("birth")); System.out.println(); } rs.close(); stmt.close(); conn.close(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } } 显示乱码?号.

C#导出Excel文件名中文乱码问题

C#导出Excel文件名中文乱码问题 string nm="["+Label1.Text+"]"+ DateTime.Now.ToString("yyyy-mm-dd")+".xls"; DataTable dt = sqlHelp.GetObject(sql).Tables[0]; StringBuilder sb = new StringBuilder(); sb.Append("成绩排名\t考试成绩\t学员名称\t考试时间"); StringWriter sw = new StringWriter(); sw.WriteLine(sb.ToString()); for (int i = 0; i < dt.Rows.Count; i++) { int q = i + 1; sb = new StringBuilder(); sb.Append(q.ToString()); sb.Append("\t" + dt.Rows[i][0].ToString()); sb.Append("\t" + dt.Rows[i][1].ToString() + "\t" + dt.Rows[i][2].ToString()); sw.WriteLine(sb.ToString()); } sw.Close(); Response.Clear(); Response.Buffer = true; Response.Charset = "GB2312"; Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(nm, Encoding.UTF8).ToString());

解决openfire在使用MySQL数据库后的中文乱码问题

解决openfire在使用MySQL数据库后的中文乱码问题 openfire是一个非常不错的IM服务器,而且是纯Java实现,具有多个平台的版本,他的数据 存储可以采用多种数据库,如MySQL,Oracle等。 在实际使用时大家遇到最多的就是采用MySQL数据库后的中文乱码问题,这个问题十分有趣, 而且从现象上可以看出openfire内部的一些机制。 实际问题是这样的:首先启动openfire服务器,然后利用客户端或直接登录到后台新建一个帐户,为该帐户指定一些中文的属性,如姓名等。如果不重启服务器,你永远不会觉得有什么不对的地方,因为所有的中文显示都是正常的。接下来重启一下openfire,再用建立的帐号登录 客户端或进入后台管理端查看,会发现所有的中文全都变成了问号。登录到数据库中进行查看,发现所有的中文字符也均为问号,这说明了两个问题: openfire具有应用层缓存 数据库编码存在问题 解决办法其实也很简单,首先要保证你为openfire创建的数据库编码是utf8的,建表语句如下: create database openfire default character set utf8 default collate utf8_general_ci 当你原来就创建好数据库时,你可以用: alter database openfire default character set utf8 default collate utf8_general_ci; 其次,在初始化openfire数据库,即第一次配置openfire服务器时,在连接数据库那里的连 接串要加入字符编码格式,必须在连接里增加UTF8的编码要求,连接字符串设置如下: jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncoding=utf8 如果已经安装完成,这个配置也是可以改动的,直接到openfire的安装目录下,找到 conf/openfire.xml这样一个文件,打开找到如下的XML节,修改其中的serverURL即可 com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/openfire?useUnicode=true&characterEncodi ng=utf8 注意:由于&具有特殊含义,因此原&符号必须被转义为&

解决PHP+mysql处理中文乱码的独家方案

解决PHP+mysql处理中文乱码的独家方案 本方案适用于所有页面文件均为php(已成功测试过),如果有混合文件读者可以亲自测试。 问题现象如下图,1所示为修复过的头部引用文件header.php,中文能正常显示,2所示为未修复过的standard.php页面文件。 一、为了解决问题,首先应该设置数据库的字符编码,如下图所示,本例将所有编码设置为UTF-8。 同样将数据库中的所有表的字符编码设置成UTF-8。

这样,数据库中可以正常显示中文字符了,如下图所示。 如果要导入外来数据,也要设置好字符编码,对于非mysql数据库的导入(如从ACCESS数据库中导入),需要设置分隔字段的字符,然后执行便可,如下图所示。 ---------------------------------------- 二、数据库的字符编码完成后,便要将页面文件的编码设置好。 这里的要点有如下三点(红色为说明文字):

为了实现上述三点要求,本例采用的方案如下: 1.创建一个数据库连接文件conn.php ,其中在开头设置header 编码,并在创建数据连接后设置SQL 请求的编码,如下图所示: 2.设置页面文件的文件类型。可以在页面文件中的标签中设置字符编 码。 2.1如果之前的字符编码为gb2312,则该文件类型为ANSI (本例使用DW 和notepad++软件,读者也可用UE 编辑软件,只不过类型显示名称不一样而已),如下图所示: 2.2将标签的编码设置成utf-8并保存文件后,再次打开,会发现文件类型变成了ANSI as UTF-8,如下图所示:

mysql数据库乱码问题

数据库读出乱码解决 一、分析常见数据库问题 修改MYSQL数据库,数据表,字段的编码(解决JSP乱码) 要解决JSP乱码,首先就要了解JSP乱码的原因 1.架设服务器安装MYSQL时的会让你选择一种编码,如果这种编码与你的网页不一致,可能就会造成JSP页面乱码 2.在PHPMYADMIN或mysql-front等系统创建数据库时会让你选择一种编码,如果这种编码与你的网页不一致,也有可能造成JSP页面乱码 3.创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码 4.创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成JSP 页面乱码 5.用户提交JSP页面的编码与显示数据的JSP页面编码不一致,就肯定会造成JSP页面乱码. 如用户输入资料的JSP页面是big5码,显示用户输入的JSP页面却是gb2312,这种100%会造成JSP页面乱码 6.字符集不正确 要注意: 1.平时你在某些网站看到的文字可能有几种编码,如你看到一个繁体字,它有可能是big5编码,也有可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点. 如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法就是(1)将网站编码设为utf-8,这样可以兼容世界上所有字符,(2)如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为GBK, GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK 7.JSP连接MYSQL数据库语句指定的编码不正确 8.JSP页面没有指定数据提交的编码,就会造成乱码: 所以,JSP乱码的原因无非就是以上几种,知道原因之后,要解决JSP乱码的方法也容易多了 我们一一来表达: 1.如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题 2.修改数据库编码,如果是数据库编码不正确:可以在phpmyadmin执行如下命令:ALTER DATABASE`test`DEFAULT CHARACTER SET utf8COLLATE utf8_bin 以上命令就是将test数据库的编码设为utf8

mysql+php中文乱码问题及mysql时间函数

mysql+php中文显示乱码的解决mysql+php中文显示乱码的解决 建议数据库用utf8编码 问题汇总: 1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. 2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 4.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP 页面乱码. 5.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码. 6.PHP页面字符集不正确. 7.PHP连接MYSQL数据库语句指定的编码不正确. 使用mysql+php产生乱码的原因都了解得很清楚了,那么解决就不困难

了. 针对不同问题的解决方法: 1.mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. 修改数据库编码,如果是数据库编码不正确,可以在phpmyadmin 执行如下命令: ALTER DATABASE 'test' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将test数据库的编码设为utf8. 2.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 修改表的编码: ALTER TABLE 'category' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 以上命令就是将一个表category的编码改为utf8. 3.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 修改字段的编码: ALTER TABLE 'test' CHANGE 'dd' 'dd' VARCHAR( 45 ) CHARACTER SET utf8

EXCEL打开乱码之解决方法

一、文档格式法 这种方法是将损坏的Word文档转换为另一种格式,然后再将其转换回Word文档格式。这是最简单和最彻底的文档恢复方法。 1.在Word中打开损坏的文档后,选择“文件→另存为”,在“保存类型”列表中,选择“RTF格式(*.rtf)”,然后单击“保存”按钮。 2.关闭损坏的文档,打开刚才保存的RTF格式文件,选择“文件→另存为”,在“保存类型”列表中,选择“Word文档(*.doc)”,然后单击“保存”按钮。 3.关闭RTF文档,打开修改后的Word文档。 Word文档与RTF的相互转换将保留其格式,如果这种转换没有纠正文件损坏,则可以尝试与其他字处理格式的相互转换,这将不同程度地保留Word文档的格式。如果使用这些格式均无法解决本问题,可将文档转换为纯文本格式(*.txt),再转换回Word格式。由于纯文本的简单性,这种方法有可能更正损坏处,但是Word文档的所有格式设置都将丢失。 二、重设格式法 Word用文档中的最后一个段落标记关联各种格式设置信息,特别是节与样式的格式设置。这样我们就可以将最后一个段落标记之外的所有内容复制到新文档,就有可能将损坏的内容留在原始文档中。步骤如下: 1.在Word中打开损坏的文档,选择“工具→选项”然后选择“编辑”选项卡,取消“使用智能段落选择范围”复选框前的勾。取消选中该复选框,选定整个段落时,Word将不会自动选定段落标记,然后单击“确定”按钮。 2.选定最后一个段落标记之外的所有内容,方法是:按“Ctrl+End”组合键,然后按 “Ctrl+Shift+Home”组合键。 3.在常用工具栏中,依次单击“复制”、“新建”和“粘贴”按钮

mysql中文乱码解决

转载:Mysql中文乱码的解决方法 第一种方法,很精辟的总结: 经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧: WINDOWS 下导入应该这样 使用MYSQL的命令 在DOS 命令下进入mysql的bin目录下,输入mysql -uroot -p密码数据库名称<要恢复的数据库, 例如我们要把D盘的一个名称为test.sql的数据库恢复到本地的test2这个数据库,那么就这样: mysql -uroot -p密码test2以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。 只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下: $mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass); mysql_query("SET NAMES 'GBK'"); 数据库字符集为utf-8 连接语句用这个 mysql_query("SET NAMES 'UTF8'"); mysql_query("SET CHARACTER SET UTF8"); mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");

Oracle数据库工具中文显示乱码问题的解决

Oracle数据库工具中文显示乱码问题的解决 Oracle客户端查询工具有时会有查处的结果为中文时不能正常显示,要么为乱码,要么为问号,plsql出现这种问题,以为是版本造成的,用了老的和最新的还是一样,换了另外的数据库工具也一样,但注意一点,数据其实是没有问题的,取出来显示是正常的中文,只是在工具里显示的是问号。其实问题的原理很简单,就是字符集设置不正确造成的,但如此简单的原理在解决的过程中却会遇到很多麻烦,下面结合我遇到和解决的过程,给朋友们一点思路,说不定你们跟我的问题一样,通过这篇文章不用再折腾了,很快搞定,感觉飘飘…… 首先讲讲字符集的知识,Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。 影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。 其中: Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA.

ZHS16GBK。从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。 如何查询Oracle的字符集,很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。 查询oracle server端的字符集,有很多种方法可以查出oracle server 端的字符集,比较直观的查询方法是以下这种:SQL>select userenv(‘language’) from dual; 结果类似如下:AMERICAN _ AMERICA. ZHS16GBK 对于查询工具结果集中的中文乱码,其实有两种情况供参考: 1.安装了服务器及配套工具,这样还出现乱码就去检查注册表中的NLS_LANG项是否设置正确,很有可能是在安装时设置了不正确的字符集造成的; 2.只安装了客户端,没有配套工具(如sqlplus等),以10g为例,注册表中是没有NLS_LANG这项的,那么要改哪?同理,还是要改字符集,不过不是在注册表中设,是要在环境变量中增加或修改,即查看windows系统环境变量是否存在NLS_LANG,若存在则修改,

excel表格乱码

竭诚为您提供优质文档/双击可除 excel表格乱码 篇一:excel出现乱码的解决方法 excel出现乱码的原因也是多种多样。如果你遇到excel 打开是乱码,可以从下面找找相应的解决办法。第一,csV 文件用excel打开是乱码 从网页导出的csV文件,用excel打开,中文会是乱码。csV文件乱码问题主要是文件编码引起的。因此要解决excel 打开乱码的问题,可以从改文件开始: 首先,用记事本打开csV文件,可能看到很长的一条数据记录。 然后,直接把刚才打开的文件另存为txt文件,如果是utF-8的文件,你应该可以看到保存成的编辑格式。 最后,用excel直接打开这个另存的文件。应该能看到正确的汉字。 第二,excel文件损坏出现乱码 有时打开一个以前编辑好的excel工作簿,却出现乱码,无法继续进行编辑打印。这种情况的原因应该是该文件已经被损坏了,可以尝试使用下面的方法之一来修复excel乱码。

1.将excel乱码文件另存为sylk格式 如果excel乱码文件能打开,将excel乱码文件转换为sylk格式可以筛选出文档的损坏部分,然后再保存数据。 2.excel乱码文件转换为较早的版本 若因启动故障而没有保存excel乱码文件,则最后保存的版本可能不会被损坏。关闭打开的工作簿,当系统询问是否保存更改时,单击“否”。在“文件”菜单中,单击“打开”命令,双击该工作簿文件。 3.打开excel乱码文件并修复工作簿 如果excel乱码文件根本不能够使用常规方法打开,可以尝试excel20xx中的“打开并修复”功能,该功能可以检查并修复excel乱码文件中的错误。 单击“文件”——“打开”。通过“查找范围”框,定位并打开包含受损文档的文件夹,选择要恢复的文件。单击“打开”按钮旁边的箭头,然后单击“打开并修复”即可。 excel乱码问题也不是一篇能写尽的,因为出现的原因实在太多样。如果上面的方法依然无效,可以借助第三方软件来尝试解决excel乱码。 officeexcelViewer是微软官方出品的一款excel乱码清除修复工具,下载安(excel表格乱码)装完毕,用officeexcelViewer打开有乱码的excel文档,然后复制单元格,并将它们粘贴到excel的一个新工作簿中。出现excel

SQLSERVER访问MYSQL表中文显示成乱码

错误描述:SQLSERVER访问MYSQL表中文显示成乱码,中文会显示成???? 解决思路:用的是mysql-5.1.50-win32 与odbc3.1版本的.现在改成ODBC5·1 这样转换就没有问题SQLSERVER连接MYSQL 建立链接如下: 数据库软件与ODBC软件:mysql-5.1.50-win32与ODBC5·1(注意,odbc3.1版本,会出现乱码)MYSQL数据库情况:gmp_test 第一步:先要在MYSQL进行授权,让主机能访问MYSQL数据库,设置如下: 在mysql数据库执行,语句: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.216' IDENTIFIED BY 'yxtech' WITH GRANT OPTION; 第二步:在SQLSERVER主机,设置ODBC连接,设置如下图: 第三步:在SQL SERVER 配置连接,配置语句如下 --删除连接 exec sp_dropserver'dxmysql','droplogins' --建立一个新连接 EXEC SP_ADDLINKEDSERVER @server ='dxmysql', --连接名称(随意,规范就可)

@srvproduct ='MYSQL', --连接MYSQL,数据库类型,固定的 @provider ='MSDASQL', --连接MYSQL的编码,固定的 @datasrc ='my_sql' --建立的ODBC连接(第二步建立的) --建立用户连接 EXEC sp_addlinkedsrvlogin'dxmysql','false','bi_etl','root','yxtech' --'dxmysql'为连接名称 --'bi_etl'为SQLSERVER用户,如果为NULL --'root','yxtech' 为登录MYSQL 的用户及密码 --进行查询 select*FROM OPENQUERY(dxmysql,'select * from test1')

如何解决MYSQL数据库中文乱码问题-

如何解决MYSQL数据库中文乱码问题? 问题:如何解决MYSQL数据库中文乱码问题? 回答: 在数据库安的时候指定字符集 如果在安完了以后可以更改以下文件: C: Program Files MySQL MySQL Server 5.0 my.ini 里的所有的default-character-set=gbk C: Program Files MySQL MySQL Server 5.0 data depot_development db.opt default-character-set=gbk default-collation=gbk_chinese_ci 建立数据库时候:指定字符集类型 CREATE DATABASE haichen CHARACTER SET gbk COLLATE gbk_chinese_ci 2.建表的时候也指定字符集 CREATE TABLE student ( ID varchar(40) NOT NULL default , UserID varchar(40) NOT NULL default , ) ENGINE=InnoDB DEFAULT CHARSET=gbk; -

1。创建数据库的时候:CREATE DATABASE `database` CHARACTER SET utf8 COLLATE utf8_general_ci 2.建表的时候CREATE TABLE `database_user` ( `ID` varchar(40) NOT NULL default , `UserID` varchar(40) NOT NULL default , ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 3.设置URL的时候jdbc:mysql://localhost:3306/database useUnicode=true characterEncoding=UTF-8

excel表格打开是乱码怎么办

竭诚为您提供优质文档/双击可除excel表格打开是乱码怎么办 篇一:打开excel表出现文件转换乱码的处理方法 打开excel表出现文件转换乱码的处理方法 问题:打开excel表出现文件转换乱码,按确定显示乱码。 问题分析:xls文件默认打开快捷方式为word。 解决方法:1、在该文件单击右键,选择“属性”; 2、在弹出属性对话框点击打开方式“更改(c)”, 3、在弹出对话框中选择excel程序,按2次“确定”; 4、重新双击需要打开的excel文件。 如下图所示: 篇二:wordexcel打开乱码的解决方法 wordexcel打开乱码的解决方法 打开的word文件中全是些乱码,无法打开,word打开时提示说需要安装转换器,excel打开时说格式不符合,有的打开后直接是乱码,遇到这些问题如何解决,今天我们就来学习一下: 第一种方法:文件格式替换法

1、打开被损坏的文档单击"文件----另存为"菜单,在"保存类型"列表中,选择"RtF格式",然后单击保存"按钮,并 关闭word。 2、打开刚才保存的RtF格式文件,再次使用"另存为"将文件重新保存为"word文档",现在打开这个word文件就可以发现文件已经被恢复过来了。 第二种:其他方法。 1、使用undelete类软件:用于刚出问题的情况时。一般word修改文件时都创建临时文件。到修改word文件的目录下去找。 2、使用word的恢复功能:即在word中,文件----打开命令,选择打开文件的类型为"从任意文件中恢复文本",然 后打开,如果不行,可以试用wps97或wps2000读入word文件,也许也有可能恢复。 3、用wordrecoverytools可以恢复任意损坏的word文件。 有时候word文档出现乱码,并不是由于数据恢复引起的,可能是因为电脑中了病毒,病毒的复制和传播引起的数据破坏,这样的情况是很难恢复的,所以建议大家对重要的数据 文档做定期备份,以免造成没有必要的损失。 篇三:excel中文显示乱码解决方法 excel中文显示乱码解决方法

SSH下mysql中文乱码问题

SSH下mysql中文乱码问题 标签:mysql中文乱码分类:mysql2010-08-25 11:05 1.在hibernate.cfg.xml配置文件中修改如下 环境:Hibernate 3.2 + MySQL5.0(MySQL的编码已设置为utf8) 问题:通过Hibernate向MySQL写入中文后,通过Hibernate取回数据,在console中打印java对象显示正常。但在MySQL Query Browser中看到的是乱码,传给前端的Flex也是乱码。原因:Hibernate的基础还是JDBC,所以一样需要设置characterEncoding! 解决方法: 在hibernate.cfg.xml中应该这样写 jdbc:mysql://localhost:3306/test?useUnic ode=true&characterEncoding=UTF-8 如果用hibernate.properties #hibernate.connection.url jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 ps:处理中文的话,characterEncoding用GBK一样可以。 但字节编码问题最好的解决方法还是统一使用UTF-8 ----- 我的项目是: jdbc:mysql://localhost:3306/myeshop?useUnicode=tru e&characterEncoding=UTF-8 2.同样在spring里的applicationContext.xml里的数据库连接也要修改: 3.在Web.xml中配置encodingFilter过滤器,在web.xml中加入下面代码 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter

Navicat MySql中文乱码问题

navicat 数据库中文乱码问题 1.右键连接属性-->高级-->Encoding-->936(Simplified Chinese GBK) 去掉User MySql character set 选项 2.数据库安装目录 my.init 更改default-character-set=utf8 3.打开mysql client,进入后再输入show variables like "%char%";可查看更改字符集后的列表. | character_set_client | utf8 | character_set_connection | utf8 | character_set_database | utf8 | character_set_filesystem | binary | character_set_results | utf8 | character_set_server | utf8 | character_set_system | utf8 | character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\chars 更改 set names utf8; 更改其中某一个 set @@character_set_database=utf8 set @@character_set_server=utf8 set @@character_set_results=utf8 set @@character_set_connection=utf8 set @@character_set_client=utf8 4.更改表与表字段字符编码方式 5.重启数据库

史上最全的PHP+MySql中文乱码解决方案

我相信PHPmyadmin里查看是乱码,调用出来的话肯定100%也是乱码。乱码问题其实也就是编码不一致导致的。要解决这个问题需要回顾乱码问题出现以前的操作是否使用的是同一种编码。 总之一句话,要解决PHP中文乱码最好最快的解决办法就是:页面申明的编码与数据库内部编码一致,如果页面申请的页码与数据库内部编码不一致时,就设定连接编码mysql_query(”SET NAMES XXX”); XXX为连接编码。一定可以解决乱码的问题。 在mysql+php程序开发中,总结了产生乱码原因: mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码. MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码. 用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码. 如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码. PHP页面字符集不正确. PHP连接MYSQL数据库语句指定的编码不正确. 一.首先是PHP网页的编码 1. php文件本身的编码与网页的编码应匹配 a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312″),静态页面添加,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。 b. 如果欲使用utf-8编码,那么php要输出头:header(“Content-Type: text/html; charset=utf-8″),静态页面添加,所有文件的编码格式为utf-8。保存为utf-8可能会有点麻烦,一般utf-8文件开头会有BOM,如果使用 session就会出问题,可用editplus来保存,在editplus

数据库表中记录显示中文乱码解决

三种mysql建表乱码的解决方法 作者:温杰 MySql建表乱码问题,默认mysql建表格式为latin(瑞典语),如何设置为能够表示中文的数据库表使我们需要解决的一个很重要的数据库设计问题。 方法1、 在表中输入中文会乱码,需要在建表的时候如下 CREATE TABLE Q3_City ( city_id INTEGER NOT NULL, name VARCHAR(64)NOT NULL, region_id INTEGER NOT NULL, user_id INTEGER NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8COLLATE=utf8_unicode_ci; 最后一段添加表的编码格式,该操作比较繁琐。 方法2、在安装mysql的时候没有指定编码格式 可以在https://www.sodocs.net/doc/aa12851561.html,f的mysqld字段下加入 default-character-set=utf8 default-storage-engine=MyISAM default-collation=utf8_bin init_connect='SET NAMES utf8' 有人这么做,但是本人的虚拟机Linux系统下的MySql不能通过此方法来实现。 方法3、 在安装mysql的时候指定编码格式(建议大家使用这种方法)如果指定了编码格式第2种方法则无效。 ./configure--prefix=/usr/local/mysql--enable-assembler--with-mysqld-ldflags=-all-static --with-charset=utf8 如上在编译mysql的时候添加编码格式,以后在该库中添加新表默认格式都为UTF8。

彻底解决MySql在UTF8字符集下乱码问题 - mysql

为了顺利的开发一个多语言的国际化J2EE程序,需要修改数据库字符集,我的做法如下: 安装MySq时选择字符集为UTF-8 修改MySql安装目录下的my.ini中配置的默认编码: 该文件中有两处这样的配置:default-character-set=latin1 将这两处改成:default-character-set=utf8 新建数据库需指定字符集: UTF8: CREATE DA TABASE mmtye DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 在命令行查看字符集编码:show variables like '%char%'; 会看到如下信息: character_set_client | utf8 character_set_connection | utf8 character_set_database | utf8 character_set_filesystem | binary character_set_results | utf8 character_set_server | utf8 character_set_system | utf8 character_sets_dir | D:\MySQL\share\charsets\ 以上内容在重启MySql后也一直有效,无需每次启动数据库都要指定。 A、为了在命令行下能正确查看中文,命令行下执行: set character_set_results=gbk; B、若需要在windows命令行执行insert、update,则执行: set character_set_client=gbk; A、B 两个命令重启数据库前有效,重启后就失效了。

解决数据恢复软件恢复word excel后文档乱码问

你可以试试下面这篇文章 有的时候可能由于操作的问题,当你再次打开一个你认为没有问题的文档时,可能会看见文件中一片乱码更本就无法阅读!如果出现了这写情况可以通过下面的两个方法,来挽救你的文件。 一、替换格式法 这种方法就是把被破坏的Word文档另存为另一种格式。 1、打开被损坏的文档单击“文件/另存为”菜单,在“保存类型”列表中,选择“RTF格式”,然后单击“保存”按钮,并关闭word。 2、打开刚才刚才保存的RTF格式文件,再次使用“另存为”将文件重新保存为“W ord文档”,现在打开这个word文件就可以发现文件已经被恢复过来了。 如果在转换成rtf格式后文件仍然不能被恢复,可以将文件再次转换为纯文本格式(*.txt),再转换回Word格式。当然在转换为txt 文件的时候其图片等信息会丢失掉。 二、重设格式法 在Word有一个隐藏的位置,用来保存文档中的各种格式信息,所以只要删除这些格式信息就可以将文件恢复了。 1、在打开损坏的文档后,单击“工具/选项”菜单,选择“编辑”标

签,取消对“使用智能段落选择范围”复选框的勾选,然后单击按钮。这样就可以修复文件了 2、选定最后一个段落之外的全部内容,然后将这些内容粘贴复制到新的word文件中即可 另外:当Word文档无法打开时,可考虑采取以下措施: (1)首选用Word的自动恢复功能。用于刚出问题的情况,而且问题是Word打开文件可 以,但是打开后出错或死机的情况:) 在打开文件中且死机前,断一下电,1/3的情 况可以恢复。 (2)使用undelete类软件:用于刚出问题的情况时。一般Word修改文件时都创建临时 文件。到修改word文件的目录下去找(不受系统temp和tmp变量的影响)。偶有成功 者。 (3)使用word的恢复功能:即在word中,文件|打开命令,选择打开文件的类型为“从 任意文件中恢复文本”,然后打开,如果不行,可以试用wps97或wps2000读入word文 件,也许也有可能恢复。 (4)用16进制编辑器如UltraEdit32、Winhex等打开Word文档,把

jsp向mysql表中插入中文数据乱码解决

Jsp 向Mysql表中添加中文文字乱码报错,解决方案 1.首先设置页面charset=gb2312 和 <% request.setCharacterEncoding("gb2312"); %> 保证要所用提交页面格式为gb2312, 如果只操作这一步,在控制台打印提交数据有可以出现乱码情况,必须添加下面配置2.创建Filter类,配置web.xml 创建一个名为txtFilter类,实现Filter接口,用来设置页面代码格式 package com.rongtianxinxijishu.book.util; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class txtFiter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub //主要步骤如下 HttpServletRequest req = (HttpServletRequest) arg0; HttpServletResponse res = (HttpServletResponse) arg1; req.setCharacterEncoding("gb2312"); res.setCharacterEncoding("gb2312"); arg2.doFilter(req, res); } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub

相关主题