、定义
<meta> 标签提供关于 HTML 文档的元数据。它不会显示在页面上,但是对于机器是可读的。可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务。
2、作用
meta里的数据是供机器解读的,告诉机器该如何解析这个页面,还有一个用途是可以添加服务器发送到浏览器的http头部内容,例如我们为页面中添加如下meta标签:
浏览器的头部就会包括这些:
只有浏览器可以接受这些附加的头部字段,并能以适当的方式使用它们时,这些字段才有意义。
3、meta的必需属性和可选属性
meta的必需属性是content,当然并不是说meta标签里一定要有content,而是当有http-equiv或name属性的时候,一定要有content属性对其进行说明。例如:
必需属性
<meta name="keywords" content="HTML,ASP,PHP,SQL">
这里面content里的属性就是对keywords进行的说明,所以呢也可以理解成一个键值对吧,就是{keywords:"HTML,ASP,PHP,SQL"}。
可选属性
在W3school中,对于meta的可选属性说到了三个,分别是http-equiv、name和scheme。考虑到scheme不是很常用,所以就只说下前两个属性吧。
http-equiv
http-equiv属性是添加http头部内容,对一些自定义的,或者需要额外添加的http头部内容,需要发送到浏览器中,我们就可以是使用这个属性。在上面的meta作用中也有简单的说明,那么现在再举个例子。例如我们不想使用js来重定向,用http头部内容控制,那么就可以这样控制:
<meta http-equiv="Refresh" content="5;url=http://blog.yangchen123h.cn" />
在页面中加入这个后,5秒钟后就会跳转到指定页面啦,效果可看W3school的例子
name
第二个可选属性是name,这个属性是供浏览器进行解析,对于一些浏览器兼容性问题,name属性是最常用的,当然有个前提就是浏览器能够解析你写进去的name属性才可以,不然就是没有意义的。还是举个例子吧:
<meta name="renderer" content="webkit">
这个meta标签的意思就是告诉浏览器,用webkit内核进行解析,当然前提是浏览器有webkit内核才可以,不然就是没有意义的啦。当然看到这个你可能会有疑问,这个renderer是从哪里冒出来的,我要怎么知道呢?这个就是在对应的浏览器的开发文档里就会有表明的,例如这个renderer是在360浏览器里说明的。360浏览器内核控制Meta标签说明文档
常用meta标签大总结
接下来就是常用的meta标签大总结啦,我会尽可能的做到全
charset
charset是声明文档使用的字符编码,解决乱码问题主要用的就是它,值得一提的是,这个charset一定要写第一行,不然就可能会产生乱码了。
charset有两种写法
两个都是等效的。
百度禁止转码
百度会自动对网页进行转码,这个标签是禁止百度的自动转码
<meta http-equiv="Cache-Control" content="no-siteapp" />
SEO 优化部分
viewport
viewport主要是影响移动端页面布局的,例如:
content 参数:
各浏览器平台
Microsoft Internet Explorer
Google Chrome
360浏览器
UC手机浏览器
UCBrowser_U3_API
QQ手机浏览器
Apple iOS
Google Android
App Links
最后——移动端常用的meta
在微信公众号开发指定回复消息为文本格式的时候,尝试了几种换行方式都不行,最终了解即 XML 的换行应使用:
是字符实体编号(16进制),可以用于处理XML中文本的换行。
对应的正确代码在第9行(部分文字有修改):
<xml> <ToUserName><![CDATA[<%= toUserName %>]]></ToUserName> <FromUserName><![CDATA[<%= fromUserName %>]]></FromUserName> <CreateTime><% createTime %></CreateTime> <MsgType><![CDATA[<%= msgType %>]]></MsgType> <% if (msgType === 'text') { if(content!=="zs") { %> <Content><![CDATA[<%= content %>]]></Content> <% } else { %> <Content>欢迎来到报名图书馆暑假工! 报名步骤: ①将招聘推文转发至朋友圈或者40人以上的群,让更多同学了解本招聘。为招聘方宣传以找到更多优质学生员工。 →<a href="http://a.xiumi.us/board/v5/29Ndm/47380885">点此进入招聘推文</a> ②回复你的资料:报名+姓名+电话号码+深圳哪个区+可上班时间 </Content> <% }} else if (msgType === 'zs') { %> <Content><a href="http://www.baidu.com/?k381740148">ddwadwada</a></Content> <% } else if (msgType === 'image') { %> <Image> <MediaId><![CDATA[<%= content.mediaId %>]]></MediaId> </Image> ... </xml>
由这个问题,我们想到web开发中还有一些类似的“乱码”,这些乱码又有哪些规律呢?
字符实体是XML和HTML中的字符编码方式,也就是上面事例中提到的,格式为:
& + 实体名称 + ; & + (# + unicode编码) + ;
实体名称一般是有意义的词,方便大家记忆,比如小于号<的实体名称是lt,也就是less than的缩写。只有部分符号是有实体名称的,使用unicode编码是更通用的写法。
像文字类一般不会采用这种编码方式,主要用于在HTML或XML文档中输出一些保留字符和空格,比如我想在HTML中展示一段html代码就需要使用字符实体
比如我们要展示`<p>情深深雨蒙蒙</p>` 以下两种表示是等效的 <pre> <p>情深深雨蒙蒙</p> <p>情深深雨蒙蒙</p> </pre>
总而言之,字符实体是HTML和XML中的编码方式,比如在HTML文档中写入:我,那么最终页面上看到的是我这个汉字。
编程语言中的unicode字符的格式为:
\u + 16进制unicode编码
绝大多数编程语言,包括CSS中都支持unicode字符,不过HTML和XML是不支持的。那么什么时候使用unicode字符呢?一般来说有两种场景:
在JS中可以使用charCodeAt()获取字符串的10进制unicode编码
类似%E6%88%91这样的,叫做URL编码,在链接的参数里非常常见
网络标准RFC 1738做了硬性规定:
“只有字母和数字[0-9a-zA-Z]、一些特殊符号”$-_.+!*'(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。”
所以像汉字,空格这些都必须经过转码。上面讲的unicode字符,字符实体用的都是unicode编号,而URL编码用的则是utf-8, 规则是将utf-8编码每隔两个字符加一个%
UTF 是英文 Unicode Transformation Format 的缩写,意为把 Unicode 字符转换为某种格式。unicode和utf-8并不是同一种东西,但是又存在着联系:unicode是信源编码,对字符集数字化; utf-8,utf-16这些是信道编码,为更好的存储和传输。
简单说,unicode就是一组数字,每一个数字对应一个字符。utf-8就是对字符的传输和保存时的规则。比如说“我”这个字,unicode码(16进制)是6211,utf-8是E68891, 那么对应的URL编码就是%E6%88%91;
{ Unicode编码: 0x6211, UTF8编码: E68891, UTF16编码: FEFF6211, UTF32编码: 0000FEFF00006211 URL编码: %E6%88%91 }
更多细节可以参考《阮一峰:关于URL编码》
Web开发中常见的几种乱码包括:Unicode字符、字符实体、URL编码。如以下情况都表示“我”:
Unicode字符: \u6211 字符实体编号(16进制):我 字符实体编号(10进制):我 URL编码:%E6%88%91
这些编码规则的本质都是一些特殊符号 + Unicode编码 所组成。
点赞+转发,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓-_-)
关注 {我},享受文章首发体验!
每周重点攻克一个前端技术难点。更多精彩前端内容私信 我 回复“教程”
原文链接:http://eux.baidu.com/blog/fe/web%E5%BC%80%E5%8F%91%E4%B8%AD%E5%B8%B8%E8%A7%81%E7%9A%84%E4%B9%B1%E7%A0%81
作者: 郑佳润
文将介绍一种Java Web/Api 开发常见的乱码问题。
前提摘要:在学习Java Web的过程中,乱码问题是经常遇到的,无论是页面乱码还是数据库乱码。本文将罗列笔者在开发过程中常常遇到几种乱码场景。
一、JSP页面乱码
因为网页默认的编码格式为ISO-8859-1
,该编码格式不支持汉字,所以在网页上显示为乱码???.
解决方案
在文件顶部添加header上添加
<pre>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
</pre>
二、ajax请求时 request.getParams乱码
在你的tomcat server.xml中配置
<Connector port="8080" protocol="HTTP/1.1"
</pre>
即添加
如果你想学习java可以来这个群,五三二,二五九,九五二,里面有大量的学习资料可以下载。 URIEconding="UTF-8" useBodyEncodingForURI="true"
三、ajax请求时 response出去为乱码
在使用Spring MVC时 须在web.xml 配置
<filter>
mvc注释 RequestMapping 声明 增加utf-8声明如
@RequestMapping(method = RequestMethod.POST, produces = "application/json; charset=utf-8")
如果是普通的servlet时,则须代码编码之后输出
response.setContentType("text/html;charset=UTF-8");
三、文件乱码
经常在拿到别人的工程文件时,由于他不同的编码例如GBK之类的编码,需要在IDE中将文件编码统一成UTF-8 即可.
window平台下,可以实用notepad++进行编转化替换即可。
四、终端乱码
如果是 System.out.println 打印显示乱码 则 VM options 里 添加 -Dfile.encoding=UTF-8
参数
五、数据库乱码
jdbc链接utf-8声明
jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
新建数据库时,选择utf-8/utf-8mb4编码
六、emoji乱码支持
新建数据库选择utf-8mb4
数据库的字符集配置 参考mysql/Java服务端对emoji的支持
mysql-connector-java 版本升级至 5.1.22,此版本笔者亲测 Ok!
如果你想学习java可以来这个群 532259952
*请认真填写需求信息,我们会在24小时内与您取得联系。