作者SmallBeeWayn (喵喵叫的蜜蜂猫)
看板PHP
标题Re: [请益] utf-8显示问题
时间Tue Aug 17 02:43:43 2010
※ 引述《jikotw74 (Deep)》之铭言:
: 小弟的经验中
: 编码有三个环节要注意
: 1.浏览器
: 就是<meta>标签的charset属性
: 会决定浏览器他用什麽什麽编码开启档案
而且如果浏览器是IE的话,请注意META charset最好是在最前面第一行
<HTML><HEAD><META http-equiv="Content-Type" content="text/html; charset=utf-8">
尤其绝对不可以摆在任何UTF8文字之後,不然IE会认不出来
就算你摆在第一行IE有时也会硬是不用,这原理我也不清楚...
: 2.档案本身
: 用进阶点的文字编辑器开启档案
: 像我是用Notepad++
: 就可选择编码成 ANSI or UTF-8
: 这是最容易被遗忘的一项
: 如果你是用DW开启新档
: 预设是big5还是utf8开启新档
: 会让档案本身编码不同(CS3前的经验)
注意!
PHP的UTF-8文件不容许有BOM
会显示出错甚至导致ob_start之类的function会失败
所以,千万别用Windows内建的记事本编辑
当页面只有部分文字问号化的话,通常就是那一页编码没存好
: 3.资料库
: 资料库还可注意两部分
: a.存放资料的编码
: 基本上就是资料库校对
: b.挖出来的方式
: mysql_query("SET NAMES 'utf8'");
: 这样就能确定挖出来的资料是UTF8编码
: ※ 引述《linbob09 (累毙了)》之铭言:
: : 这个问题在板上爬过文,但是都无解
: : 在内码打了<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
: : 和这三个mysql_query('SET NAMES utf-8');
MySQL : MYSQL_QUERY("SET NAMES 'utf8'");
MySQLi: ->query("SET NAMES 'utf8'");
我记得只要这一个就可以全部UTF8了,其他几个SET不用设定
基本上...MySQL的命令尽量用""去包,这样下命令比较方面
: : mysql_query('SET CHARACTER_SET_CLIENT=utf-8');
: : mysql_query('SET CHARACTER_SET_RESULTS=utf-8');
: : mysql的校对也是utf-_8_general_ci,而在mysql的浏览网页也都可以正常显示中文
: : 但是偏偏在我写的网页里面,中文的部分都会变成???
: : 想请教各位到底是哪边还要改呢??
: : ----------------------------------------------------------------------------
: : 我刚刚试了楼下那篇跟这篇的方法,可以显示中文了,但是我把它改回原来的样子的话,
: : 就一样可以显示中文,有人可以告诉我这是差在哪边吗??
我猜是你META放不够前面所以IE没用UTF8开启
改正之後IE记住这个网页要用UTF8开所以暂时正常一阵子
快取没了之後又回复原状
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.180.163
1F:推 LPH66:那行<meta>不一定得在第一行 在<title>前面就够了 08/17 02:48
2F:→ LPH66:重点正是你提到的不可以摆在任何UTF8文字之後 08/17 02:48
3F:→ LPH66:而<title>通常会是第一个出现非英文字的地方 08/17 02:49
4F:推 doom3:meta放注解就会有utf8了 08/17 09:31