php页面字符集解析的先后顺序

在编写php的时候,总会遇到编码的问题,对于php页面的编码(不考虑参数的编码)解析顺序是怎么样的?

首选确定影响页面编码的因素有一下几点:

       1、文件的编码方式
        2、Apache2的默认字符集设置
        3、PHP.ini中的默认字符集的设置
        4、PHP脚本中手动输出header(‘Content-type:text/html;charset=xxx’);
        5、html页面中加入

       参考互联网上资料,给出的答案如下:

php.ini默认字符集设置 > header函数字符集设置 > apache2默认字符集设置 > meta标签字符集设置

       对于变量需要转换编码,PHP提供了iconv和mb_convert_encoding,其实两个都是字符串转码。

说明:string iconv ( string in_charset, string out_charset, string str ),将字符串 str 从 in_charset 转换编码到 out_charset。
       说明:string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] ),将 string 类型 str 的字符编码从可选的 from_encoding 转换到 to_encoding。
       两个的主要区别,参考了一下其他网站,主要解释如下:
      1、mb_convert_encoding() 该函数会根据内容自动识别编码,但是执行效率比iconv差;
       2、然后有一种说法就是iconv()在一些字符转换下会不正常,网上有种说法就是:发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug;
       3、mb_convert_encoding()是PHP扩展函数,要开启扩展库才能用;而iconv是PHP内置函数,不需另外开启扩展库就可以使用;
       4、一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数。

时间: 2024-11-13 07:04:17

php页面字符集解析的先后顺序的相关文章

thinkphp从数据库里的html代码显示页面不解析

首先,这个问题不应该出现在这里,因为以前在用ThinkPHP3.1.2的时候,利用富文本编辑器保存文本后,直接从数据库里面取出的数据都能正常显示,改用ThinkPHP3.2.3之后,thinkphp从数据库里的html代码显示页面不解析,直接显示源代码了,这个问题其实很简单,只是当时很着急,没有想到. 一般出现问题之后,要从源头开始思考,找原因,不是立即百度或Google.今早起来的时候想了一下,所有的数据文件都是从我的数据库里面显示出来的,问题应该就出现在数据的获取和数据的展示途中.果然,打开

运行page页面时的事件执行顺序

运行page页面时的事件执行顺序 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControl

jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JAVA代码,不管写哪里,都会最新被解析

jsp页面无法解析EL表达式

从eclipse迁移到idea,真是各种被坑. 今天遇到的jsp无法解析EL,页面直接就显示${xxx}好坑爹 Root cause:idea生成的web.xml 的web-app版本居然是2.3,2.3之后的版本才支持el表达式的 直接换成3.1的 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

MVC中 _ViewStart _Layout Index三个页面中的加载顺序

MVC学习中忽然想到一个问题.. 在访问一个Index.cshtml页面时, MVC的加载顺序是怎么样的呢? 首先说下我的结论 1. _ViewStart.cshtml 2. Index.cshtml 3. _Layout.cshtml 经过实验认为 http://www.byywee.com/page/M0/S957/957632.html 给出的结论是错误的. 若有不同意见的道友请留言辩驳..不胜荣幸 论述我的观点和实验过程: 经过了解 _ViewStart.cshtml页面指定谁是模板页

beautifulsoup学习-抓取页面并解析

以汽车之家为例子,抓取页面并进行解析 # -*- coding=utf-8 -*- import urllib2 from BeautifulSoup import BeautifulSoup as bs3 import json import codecs #字符检测,用来检测其真实的编码格式 import chardet #save content to file def save_to_file(filename, content): f = open(filename, 'w+') as

浏览器解析js的顺序

javascript解析器工作步骤 "找到一些东西":var.function.参数:(预解析) ==备注:如果遇到重名分为以下两种情况== 变量和函数重名时,只留下函数 函数重名,根据代码的上下文顺序,留下最后一个 逐行解读代码 ==备注:表达式可以修改与预解析的值== 函数调用:也会进行预解析:找到var.function.参数 JS解析器在执行第一步预解析的时候,会从代码的开始搜索直到结尾,只去查找var.function和参数等内容.一般把第一步称之为"JavaScr

python爬虫的页面数据解析和提取(2)

四.json和jsonpath的使用 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与后台之间的数据交互. JSON和XML的比较可谓不相上下. Python 2.7中自带了JSON模块,直接import json就可以使用了. 官方文档:http://docs.python.org/library/json.html Json在线解析网站:ht

Json解析数据导致顺序改变问题

json解析的时候,通常顺序会发生改变,如果我们有保持原有顺序的需求的话可以通过如下方式 1.使用fastJson的Feature.OrderedField JSONObject respJson = JSONObject.parseObject(jsonStr, Feature.OrderedField); 2.初始化JSONObject的时候 JSONObject(boolean ordered); 3.可以使用Google的Gson,使用gson解析的话是怎么传就是什么顺序 JsonObj