学习笔记之乱码处理(PHP,MYSQL,HTML,FLEX)
1.MySQL:
可用MySQL-FRONT设置字符编码为UTF-8 (我用的是UTF-8的 :)) , 或者用命令行在建立数据库时,设置charset=utf-8
mysql> character_set_client 是取得客户端提交的字符编码
mysql> character_set_connection 是将客户端的字符编码转换为服务器数据库的字符编码
mysql> character_set_results 是将服务器端的字符编码转换为客户端的字符编码
mysql> character_set_server mysql服务器默认字符编码,当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
mysql> character_set_database 这个数据库默认的字符编码,当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
2.PHP:
PHP本身没有什么涉及到编码问题的,主要是链接数据库和利用模版显示结果时,要注意交互数据的编码格式 。在和Mysql交互时 , 要设置charset
PHP在显示页面时,可用header("Content-type: text/html; charset=utf-8");
PHP在连接数据库的时候,一般采用PDO是 可在config参数中,给charset
PDO的构造参数形式如下:
function __construct ($dsn, $username, $passwd, $options)
在$options参数中,可给charset="utf-8";
$dsn = "mysql:dbname=test; host=localhsot";
$options->charset = db_config::charset;
$options->driver = db_config::driver
3.HTML
主要用到的有meta中的标签
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
4.FLEX
主要说flex和php利用amfphp通信时的乱码问题,在amfphp的gateway.php中,有一行
$gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");
这一行就是设置flex和php的两端字符集,一般来说,大家肯定都是统一字符集的,所以我把两个都改成了utf-8,有用不一样编码的同学可以自己尝试一下,研究一下到底那个是PHP,那个是FLEX的
flex和php通信调用mysql是,主要也是要注意php和mysql的字符集,利用amfphp调用的话,本质上,还是http的访问,所以 只要php和mysql没问题 基本上问题都不大。