【开发必读】php与mysql中文乱码解决办法

原文地址:http://www.phpthinking.com/archives/320

MySQL对中文的支持程度还是很有限的,尤其是新手,但凡出现乱码问题,就会头大。

乱码问题1:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号。

症状:用PHPmyAdmin输入汉字正常,但当PHP网页显示MySQL数据时汉字就变成了?号,并且有多少个汉字就有多少个?号。

原因:没有在PHP网页中用代码告诉MySQL该以什么字符集输出汉字。

解决方法:

1.网页文件head设置编码<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />

2.PHP页面在保存的时候使用utf-8编码保存,可以用记事本或convertz802转换文件

3.在MYSQL中新建数据库的时候数据库 选择UTF-8编码既字符集 设定为 utf-8_unicode_ci(Unicode (多语言), 不区分大小写),

库里面 表table的 整理 设置为 utf-8_general_ci

表里面的每个字段的 整理 都设置为 utf-8_general_ci

4.在PHP连接数据库的时候,也就是mysql_connect()之后加入

1 //设置数据的字符集utf-8
www.ITstudy.cn
2 mysql_query("set
names ’utf8’ "
);
3 mysql_query("set
character_set_client=utf8"
);
4 mysql_query("set
character_set_results=utf8"
);

注意是utf8,不是utf-8 。

如果你的网页编码是gb2312,那就是 SET NAMES GB2312。但编辑员强烈推荐网页编码、MySQL数据表字符集、PHPmyAdmin都统一使用UTF-8。

以上四点即可实现全站utf-8编码,而且在数据库中也不会有中文乱码。

乱码问题2:用PHPmyAdmin输入数据时发生错误,不让输入或出现乱码

解决方法:这是设置问题。请安装最新版PHPmyAdmin或Appserv,打开PHPmyAdmin,MySQL 字符集: UTF-8 Unicode (utf8); MySQL 连接校对应该为utf8_unicode_ci;创建新的数据库时整理一栏请也选成utf8_unicode_ci。网页字符集也最好选用utf-8。utf-8是国际标准编码,是趋势。

乱码问题2: 在本机开发好的MySQL数据表,在本机测试一切正常,但用网站空间商提供的PHPmyAdmin上传时却出现问题,上传失败。尤其是使用国外PHP空间。

解决方法:首先查看网站空间商提供的PHPmyAdmin字符集设定,确定自己所建数据表与服务商的是同一编码。在国外MySQL是不支持gb2312的,甚至最新版的Apache也不支持gb2312。如果是因为编码不统一,可以重建数据表,当然是用国际标准的UTF8。

时间: 2024-12-26 11:01:11

【开发必读】php与mysql中文乱码解决办法的相关文章

Ubuntu 12.04 mysql中文乱码解决办法

$ sudo vi /etc/mysql/my.cnf  (在[mysqld]下添加) 按a或i进入编译模式 character-set-server=utf8collation-server=utf8_general_ci 按Esc键退出编译模式 :wq  (保存并退出) $ sudo service mysql restart 注:如果已存在数据库,只需将有问题表的字段的结构改为utf8_swedisk_ci(默认为latin1_swedish_ci),可借助phpmyadmin工具

Linux下Tomcat向MySQL插入数据中文乱码解决办法

Linux下Tomcat向MySQL插入数据中文乱码解决办法 一.问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码 二.解决办法 1.尝试一直接在linux上面使用insert语句插入中文,正常2.尝试二在tomcat配置文件server.xml中加入useBodyEncodingForURI="true",不行3.尝试三在tomcat配置文件server.xml中再加入URIEncodin

navicat for mysql 显示中文乱码解决办法

navicat for mysql 显示中文乱码解决办法   最近遇到一个问题,用navicat for mysql 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题就的寻求解决之道,百度了好长时间也没解决,网上那些解决办法都不 适合我的问题,网上的大多数解决方法是在navicat里右击一个连接,选择连接属性,切换到高级选项卡,去掉“使用mysql字符集”前的对勾,在编码 里选择utf-8,这种方法对于部分问题可能适合,但是我的乱码问题依然存在,于是乎我又将ut

PHP中文乱码解决办法

一.         首先是PHP网页的编码 1.     php文件本身的编码与网页的编码应匹配 a.     如果欲使用gb2312编码,那么php要输出头:header("Content-Type: text/html; charset=gb2312"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的编码格式为ANS

Oracle导入中文乱码解决办法

Oracle导入中文乱码解决办法 一.确保各个客户端字符集的编码同服务器字符集编码一致 1-       确定sqlplus字符集编码,如果是windows设置环境变量. 2-       确保SecureCRT客户端的字符集为简体中文即可,不要设置为UTF-8,否则在连接oralce数据库时,中文都显示乱码,以免产生不必要的麻烦. 二.设置带中文的sql脚本的字符集

【转】sublime text 2 中文乱码解决办法

sublime text 2是一款非常优秀的跨平台文本及源代码编辑器,本人非常喜欢,但是不支持GB2312和GBK编码在某些时候比较麻烦.可以通过向sublime text 中添加编码类型转换包(比如“ConvertToUTF8")来解决这一问题.具体方法如下: 首先声明:这一方法前提是sublime text 2的安装路径没有中文字符,且系统路径的%username%中不包含中文字符.否则需要手动添加转换包,这个稍后说明. 1. 安装Sublime Package Control: 在Subl

[Linux] - CentOS中文乱码解决办法

CentOS 7 终端中文乱码解决办法: 1.使用vim编辑locale.config文件: vim /etc/locale.conf 2.将LANG="en_US.UTF-8"修改为: LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en" SY

php mysql 中文乱码解决,数据库显示正常,php调用不正常

一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312编码的,却以UTF-8编码打开再保存.要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码: 1.文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的.记事本和Dreamweaver在打开页面时候会自动识别文件编码因而不太会出问题.而ZendStudio却不会

mysql中文乱码解决方式

近期项目使用到mysql.却突然出现了中文乱码问题.尝试了多种方案,最终解决乱码问题,总结一下解决方式,给遇到同样问题的人一点參考. 中文乱码的原因 1.安装mysqlserver的时候编码集设定有问题 2.创建数据库的时候编码集设定有问题 3.创建表的时候编码集设定有问题 4.client的编码集设定有问题 能够通过命令查看编码集: show variables like "%char%"; 经常使用编码集 1.java中的经常使用编码UTF-8;GBK;GB2312;ISO-885