php中相关乱码处理
本文的作用是为了全方位的避免因使用UTF-8编码而产生的乱码问题,不包含具体的乱码解决方案和编码转换的内容。对于UTF-8编码的深入了解,请参阅:《PHP匹配UTF-8中文字符的正则表达式》
1、 编辑器:不要使用任何微软的编辑器,什么Frontpage,Web Designer,记事本,写字板什么的,能丢的全部丢开,因为这些编辑器会在你的UTF-8文档前面产生BOM,关于BOM的具体说明,可以在 这里 找到,当年我直接拿记事本转UTF-8覆盖原文件,造成大量代码损毁,至今记忆犹新。
2、MySQL数据库:注意建库,建表,建字段(注意有三处)的时候,都要选用utf8_general_ci的整理格式(Collation),在PHP使用mysql_connect()函数连接数据之后,需要加上一句:
mysql_query('set names "utf8"');
3、PHP:
使用mbstring库,不要使用iconv库。
使用preg而不要使用ereg来处理字符。
使用htmlentities()函数,html_entity_decode()函数的时候要带上第三个参数:
[Copy to clipboard]CODE:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
$str = "<a href='test'>中文</a>";
echo htmlentities($str,ENT_COMPAT,"UTF-8"); //显示(源代码里面) <a href='test'>涓 枃</a>
echo html_entity_decode(htmlentities($str,ENT_COMPAT,"UTF-8"),ENT_COMPAT,"UTF-8"); // 显示(源代码里面) <a href='test'>中文</a>
?>
这里再给出一个匹配UTF-8中文字符的正则表达式:
[Copy to clipboard]CODE:<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<?php
$word = "中文";
if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true)
{
echo "很好,这是一个UTF-8编码的汉字";
}
else
{
echo "抱歉,这不是一个UTF-8编码的汉字";
}
?>
4、HTML:在<head></head>标签对里面加上
<meta http-equiv="Content-Type" c />
5、 JS:JS的问题比较复杂,如果直接将文件存为UTF-8的编码,那么当用户在直接用浏览器访问这个页面的时候(也许某些程序员会这么做),浏览器可 能会使用其它的编码去读取这个文件而造成其中的UTF-8中文乱码,当然,这并不会影响到程序的运行。在加载JS的时候,可以说明一下载入JS的编码,当 然,如果已经在HTML头里面声明了编码,这里就不是必须的了:
<script type="text/javascript" language="javascript" src="scripts/output.js" charset="UTF-8"></script>
JS要注意的另一个问题是他的escape()函数,在ECMAScript v3中,escape( ) 会被剔除,建议使用encodeURI( )和encodeURIComponent( )。这可以帮助你远离escape()函数引起的乱码问题。
6、CSS:在CSS文件的头部加上这行代码:
@charset "UTF-8";
7、 URL:为了让URL变得更为友好,许多PHP程序员喜欢让URL显示文字而不是URL编码,目前较为合理的解决方案是将GET方法发送的数据转为 GBK编码,然后再接受这些数据,如果你希望使用UTF-8直接友好的GET数据,你会在使用PHP的$_GET数组时遇到一些问题。
8、Email:使用UTF-8编码的字符发送邮件,也是一件让人头疼的事情,理想的方法是将编码转变为GBK,然后再发送。
9、Ajax:使用POST的方式发送数据,不要使用GET的方式,不然无法成功发送部分UTF-8中文字符。
php中相关乱码处理相关推荐
- ide中tomcat乱码_idea tomcat 乱码问题的解决及相关设置
问题,在idea中出现乱码问题,以前没有的,好像在设置系统代码为utf8之后就出现了,于是尝试了一系列办法,希望这些办法对您有帮助. 先看一下乱码的样式. 设置办法 1.在tomcat Server中 ...
- zabbix的主动模式和被动模式、添加监控主机、添加自定义模板、处理图形中的乱码、自动发现...
主动模式和被动模式 主动或者被动是相对客户端来讲的 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端 主动模式,客户端会主动把监控数据汇报给服务端,服务 ...
- web中常见乱码问题详解
基本讲解: 1.UTF-8国际编码,GBK中文编码.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.web tomcat:默认是ISO8859-1,不支持 ...
- 19.7 主动模式和被动模式 19.8 添加监控主机 19.9 添加自定义模板 19.10 处理图形中的乱码 19.11 自动发现...
2019独角兽企业重金招聘Python工程师标准>>> 19.7 主动模式和被动模式 • 主动或者被动是相对客户端来讲的 • 被动模式,服务端会主动连接客户端获取监控项目数据,客户端 ...
- html中post语句,html中post乱码的解决方法
html中post乱码的解决方法 发布时间:2021-05-27 11:29:00 来源:亿速云 阅读:91 作者:小新 这篇文章主要介绍html中post乱码的解决方法,文中介绍的非常详细,具有一定 ...
- mysql数据库的字符集_mysql数据库中字符集乱码问题原因及解决
前言 有的时候我们在查看数据库数据时,会看到乱码.实际上,无论何种数据库只要出现乱码问题,这大多是由于数据库字符集设定的问题. 下面我们就介绍一下,数据库的字符集的设定及乱码问题的解决. mysql数 ...
- 程序中中文乱码问题的总结
近日在项目中遇到了中文乱码问题,前前后后花了两三天时间才得以解决.现对程序中中文出现乱码的可能原因及解决方案做个简单总结. 1.开发环境:Win7 Eclipse spring+Struts2+h ...
- SpringMVC学习笔记:springMVC中相关细节
SpringMVC中相关细节 1.什么是MVC? MVC是一种软件架构思想,将软件按照模型.视图.控制器来划分. ①M:模型层:指工程中的javaBean,作用是处理数据.javaBean分为两类:一 ...
- python 全栈开发,Day45(html介绍和head标签,body标签中相关标签)
python 全栈开发,Day45(html介绍和head标签,body标签中相关标签) 一.html介绍 1.web标准 web准备介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) ...
最新文章
- Linux指定网卡优先级,如何在Ubuntu中设置网络连接的优先级?
- 《模拟信息转换器(AIC)的实现技术研究》读书笔记
- Hard Calculation 模拟(200)
- Effective STL 条款30
- .net 测试工具类
- asp.net core使用serilog将日志推送到腾讯云日志服务
- 深度学习(09)-- DenseNet
- ruby hash方法_Hash.fetch()方法以及Ruby中的示例
- 计算机专业跨专业考文科,给07年想跨专业考湖大计算机专业的同学
- Ubuntu 18.04: Debug package with debug symbol
- wpf 切换搜狗输入法英文_CPA《财管》考试,没时间按计算器,用搜狗V模式,真香!...
- 这3分钟的习惯改变了我的生活
- 汉化风暴 python_手机端强大的汉化风暴工具 可汉化软件
- matlab powf,科学网—MZDDE中操作数更正 - 张凯元的博文
- 社交帝国的至暗时刻,Facebook“非死不可”?
- V2X(二)GNSSPC5UU
- 中国建设银行信息技术岗笔试
- 对开源软件的认识与实践-刘彬
- python函数初体验
- React.createElement的理解使用
热门文章
- JasperReport:几个莫名其妙的问题的解决
- Visual Studio2012安装失败
- Spring面向切面编程-AOP详解
- 车牌识别之一:车牌定位
- C# 图片背景变为透明
- Jacoco 入门使用
- secureCRT串口传送文件
- mysql为什么不使用二叉树,MYSQL 索引为什么使用B+树,而不是 B 树,二叉树:
- 微信小程序图片实现宽度100%,高度自适应
- 未能找到下列包文件: C:\Users\Administrator\Desktop\DotNetFX40\dotNetFx40LP_Full_x86_x64zh-Hans.exe