接触这么长时间的网页设计,已经碰到了非常多的和编码方式有关的东西了。但是今天又遇到了了一次乱码,还好搜一下就解决了。
以下是我知道的需要注意编码方式的地方:
1.
(通知浏览器本页面的解码方式)
2.
文档保存时的编码方式
3.
数据库的编码方式(在定义数据库或者表的时候设置)
4.
SQL语句的编码方式(使用“SET NAMES UTF8”设置)
其中最后一个的编码方式是由什么决定的?在这种情况下:
一个静态页面通过文本数据框数据一个数据,通过get方法传输到另一个php页面,这个php页面将这个数据放到一条插入语句中,并执行这条SQL语句。
此时这条查询语句的编码方式是由什么决定的?是静态页面的编码方式还是动态页面的编码方式还是其他的东西?反正我全都设置成UTF-8了,成功插入了,没有乱码。但是问题是每次插入都要使用“SET NAMES UTF8”设置,怎么才能把UTF8设置成SQL语句的默认编码方式?
另外还有那些地方需要注意编码方式?
所有的“编码方式”都以输出的页面为基准
mysql具有自适应“编码”的功能(其他数据库不清楚),即你让他返回什么编码他就返回什么编码
原则是:几乎每一次IO就要考虑编码问题
载入php本身就是一次,因为系统/web server和php本身就是两个编码
php输出,客户端系统/浏览器和输出的字符是两个编码
读写文件、读写数据库,include……等等
再提几个容易忽略的
cookies,这个几率不大,但也要留意
session,我没测试两个不同编码的php共同使用一个session的情况,你试试
发送接收,例如curl、socket和API
和其他语言交互
……