本文的作用是为了全方位的避免因使用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中相关乱码处理相关推荐

  1. ide中tomcat乱码_idea tomcat 乱码问题的解决及相关设置

    问题,在idea中出现乱码问题,以前没有的,好像在设置系统代码为utf8之后就出现了,于是尝试了一系列办法,希望这些办法对您有帮助. 先看一下乱码的样式. 设置办法 1.在tomcat Server中 ...

  2. zabbix的主动模式和被动模式、添加监控主机、添加自定义模板、处理图形中的乱码、自动发现...

    主动模式和被动模式 主动或者被动是相对客户端来讲的 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端 主动模式,客户端会主动把监控数据汇报给服务端,服务 ...

  3. web中常见乱码问题详解

    基本讲解: 1.UTF-8国际编码,GBK中文编码.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.web tomcat:默认是ISO8859-1,不支持 ...

  4. 19.7 主动模式和被动模式 19.8 添加监控主机 19.9 添加自定义模板 19.10 处理图形中的乱码 19.11 自动发现...

    2019独角兽企业重金招聘Python工程师标准>>> 19.7 主动模式和被动模式 • 主动或者被动是相对客户端来讲的 • 被动模式,服务端会主动连接客户端获取监控项目数据,客户端 ...

  5. html中post语句,html中post乱码的解决方法

    html中post乱码的解决方法 发布时间:2021-05-27 11:29:00 来源:亿速云 阅读:91 作者:小新 这篇文章主要介绍html中post乱码的解决方法,文中介绍的非常详细,具有一定 ...

  6. mysql数据库的字符集_mysql数据库中字符集乱码问题原因及解决

    前言 有的时候我们在查看数据库数据时,会看到乱码.实际上,无论何种数据库只要出现乱码问题,这大多是由于数据库字符集设定的问题. 下面我们就介绍一下,数据库的字符集的设定及乱码问题的解决. mysql数 ...

  7. 程序中中文乱码问题的总结

    近日在项目中遇到了中文乱码问题,前前后后花了两三天时间才得以解决.现对程序中中文出现乱码的可能原因及解决方案做个简单总结. 1.开发环境:Win7  Eclipse  spring+Struts2+h ...

  8. SpringMVC学习笔记:springMVC中相关细节

    SpringMVC中相关细节 1.什么是MVC? MVC是一种软件架构思想,将软件按照模型.视图.控制器来划分. ①M:模型层:指工程中的javaBean,作用是处理数据.javaBean分为两类:一 ...

  9. python 全栈开发,Day45(html介绍和head标签,body标签中相关标签)

    python 全栈开发,Day45(html介绍和head标签,body标签中相关标签) 一.html介绍 1.web标准 web准备介绍: w3c:万维网联盟组织,用来制定web标准的机构(组织) ...

最新文章

  1. Linux指定网卡优先级,如何在Ubuntu中设置网络连接的优先级?
  2. 《模拟信息转换器(AIC)的实现技术研究》读书笔记
  3. Hard Calculation 模拟(200)
  4. Effective STL 条款30
  5. .net 测试工具类
  6. asp.net core使用serilog将日志推送到腾讯云日志服务
  7. 深度学习(09)-- DenseNet
  8. ruby hash方法_Hash.fetch()方法以及Ruby中的示例
  9. 计算机专业跨专业考文科,给07年想跨专业考湖大计算机专业的同学
  10. Ubuntu 18.04: Debug package with debug symbol
  11. wpf 切换搜狗输入法英文_CPA《财管》考试,没时间按计算器,用搜狗V模式,真香!...
  12. 这3分钟的习惯改变了我的生活
  13. 汉化风暴 python_手机端强大的汉化风暴工具 可汉化软件
  14. matlab powf,科学网—MZDDE中操作数更正 - 张凯元的博文
  15. 社交帝国的至暗时刻,Facebook“非死不可”?
  16. V2X(二)GNSSPC5UU
  17. 中国建设银行信息技术岗笔试
  18. 对开源软件的认识与实践-刘彬
  19. python函数初体验
  20. React.createElement的理解使用

热门文章

  1. JasperReport:几个莫名其妙的问题的解决
  2. Visual Studio2012安装失败
  3. Spring面向切面编程-AOP详解
  4. 车牌识别之一:车牌定位
  5. C#  图片背景变为透明
  6. Jacoco 入门使用
  7. secureCRT串口传送文件
  8. mysql为什么不使用二叉树,MYSQL 索引为什么使用B+树,而不是 B 树,二叉树:
  9. 微信小程序图片实现宽度100%,高度自适应
  10. 未能找到下列包文件: C:\Users\Administrator\Desktop\DotNetFX40\dotNetFx40LP_Full_x86_x64zh-Hans.exe