PHP基础|如何解决中文乱码问题?-阿里云开发者社区

开发者社区> 行者武松> 正文

PHP基础|如何解决中文乱码问题?

简介:
+关注继续查看

为什么会出现中文乱码?

很多新手朋友学习PHP的时候,发现程序中的中文在输出的时候会出现乱码的问题,那么为什么会出现这种乱码的情况呢?一般来说,乱码的出现有2种原因,一种是由于编码 (charset) 设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,第二种就是文件被以错误的编码打开,然后保存,比如一个文本文件原先是 GB2312 编码的,却以 UTF-8 编码打开再保存,就会出现乱码的问题。本篇文章,就带大家了解一下,怎么解决php中乱码的问题。

我们将乱码情况分为以下几种,有需要的可以对照下面的几种情况有针对性的解决乱码问题

第一种:解决HTML中中文乱码问题方法

如果你的 HTML 文件文件出现了乱码问题,那么你可以在 head 标签里面加入UTF8编码(国际化编码): UTF-8 是没有国家的编码,也就是独立于任何一种语言,任何语言都可以使用的。


  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

示例

我们现在的 HTML5 文件,设置编码更为简单,像下面这样

第二种、HTML和PHP混合的页面解决方案

如何是 HTML 和 PHP 混编,除了按照第一个方法所说的操作之外,还需要在 PHP 文件的最上面加入这句代码:


  1. <?php header("content-type:text/html;charset=utf-8"); //设置编码 ?>  

第三种、纯PHP页面的中文乱码问题(数据是静态的)

如果你的 PHP 页面出现了乱码,只需要在页面的开始处加入下面代码就可以了。


  1. <?php header("content-type:text/html;charset=utf-8"); //设置编码?> 

第四种、PHP+Mysql中文乱码问题

这个除了按照第三种所说的操作之外,还要在你的数据查询/修改/增加之前加入数据库编码。而且,值得注意的是,这里的UTF8和之前的不一样,中间是没有横线的。


  1. <?php mysql_query('SET NAMES UTF8'); //接下来的就是查出数据或者修改,增加?> 

如何你使用的 MySQL 版本在 4.1 或更高版本,可以在链接数据库操作后,设置一个字符编码,像下面这样

UTF-8 编码只是其中一种编码,如果不想使用 utf-8 编码,也可以使用其他编码,只需将 UTF-8 换成你想使用的编码就可以,目前中文网站开发中主要用的是 GB2312 和 UTF-8 两种编码。

有一点要注意的是在需要做数据库操作的php程序前加的 mysql_query (" set names '编码'");编码,一定要和 php 编码一致,如果 php 编码是 gb2312 那 mysql 编码就是 gb2312 ,如果是 utf-8 那 mysql 编码就是 utf8 ,这样插入或检索数据时就不会出现乱码了


作者:PHP基础

来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
大话微服务(三):如何设计Restful API?
  API的定义取决于选择的IPC通信方式,如果是消息机制(如 AMQP 或者 STOMP),API则由消息频道(channel)和消息类型;如果是使用HTTP机制,则是基于请求/响应(调用http的url),这里我们先简述下RestfulAPI的定义。   设计原则   域名   应该尽量将API部署在专用域名之下,如:   也可以放在主域名下:   版本
4 0
Swarm的基本认知
  Swarm 是分布式存储平台和内容分发服务,是以太坊 web3 栈的本地基础层服务。Swarm 的主要目标是提供充分分散和冗余存储的以太坊公共记录,尤其是存储和分发 DApp 的代码和数据以及区块链数据。从经济角度来看,它允许参与者有效汇集他们的存储容量和带宽资源,以给网络的所有参与者提供这些服务,同时接受以太坊的激励。   目标   Swarm 更广泛的目标,是为去中心化的 web 应用程序(DApp)开发人员提供基础设施服务,特别是:消息传递、数据流、点对点记账、可变资源更新、存储保险、监管扫描和修复、支付渠道和数据库服务。
3 0
SQLite学习之开篇
  一、简介:   SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。事实上,尽管SQLite拥有诸多关系型数据库的基本特征,然而由于应用场景的不同,它们之间并没有更多的可比性。下面我们将列举一下SQLite的主要特征:   1). 管理简单,甚至可以认为无需管理。   2). 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。   3). 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、
4 0
Web缓存:通过Java实现更好的经济战略
  我读取 缓存的最好的比喻 来自Peter Chester,他在WordPress会议期间使用。他问观众,“3,485,250分为23,235”?最初的沉默之后,有些人把他们的计算器拿出来,最后有人大声喊道:“150.”切斯特先生又问了一个同样的问题,能够回应 这是缓存!   总而言之,这是一个非常简单的缓存情况,因为答案总是一样的。但隐喻是太棒了!实质上,缓存是关于经济。我们为等待响应的客户节省时间。我们节省资源,重新计算我们已经知道的答案。我们节省带宽。   我们该怎么做?通过保持一些响应“更接近”请求者并再次服务,而不必返回原始服务器并再次计算答案。
4 0
SpringBoot+SpringSecurity 前后端分离 + Jwt 的权限认证
  前言   一般来说,我们用SpringSecurity默认的话是前后端整在一起的,比如thymeleaf或者Freemarker,SpringSecurity还自带login登录页,还让你配置登出页,错误页。   但是现在前后端分离才是正道,前后端分离的话,那就需要将返回的页面换成Json格式交给前端处理了   SpringSecurity默认的是采用Session来判断请求的用户是否登录的,但是不方便分布式的扩展,虽然SpringSecurity也支持采用SpringSession来管理分布式下的用户状态,不过现在分布式的还是无状态的Jwt比较主流。
3 0
产品经理须知:你的产品调查问卷真的有用吗?
  做产品,首先,我们需要考虑到用户需求。那么,用户需求又从哪里得知呢?   首先,收集二手数据+一手数据   一般是先收集二手数据,因为这些数据是已经被处理筛选过的数据,所以真实率都会比较高。但是,对于很多冷门的产品或者服务而言, 如果市场上的数据不够充分,我们就要自己开始动手设计调查问卷了。   设计问卷前解决的几个问题:
4 0
从校园到职场 - 面试官是怎么看简历里的项目经验
  知识星球里有人吐槽,说一些名校毕业生的项目经验,明显都是刷出来的,前一年一水的电子商城,今年一水的秒杀系统。   我相信每个应届生都会面临这个问题,简历里希望填充一些可以让用人单位高看一眼的项目经验,校方或某些第三方机构可能会给一些实习项目,帮助学生攒这样的项目经验,甚至可能已经是一条龙服务,学生只要跟着项目按部就班的做一点基础工作,就可以堂而皇之的把经验写入简历,并希望作为就业的敲门砖。   那么,今天,说一下,作为面试官,是怎么看待这些项目经验的。   当然,面试官有很多种,我只以我为例,我认为自己应该具有一定的代表性,但不要苛求普适性。
6 0
SpringBoot项目使用多线程处理任务时无法通过Autowired注入bean
  最近在做一个“温湿度控制”的项目,项目要求通过用户设定的温湿度数值和实时采集到的数值进行比对分析,因为数据的对比与分析是一个通过前端页面控制的定时任务,经理要求在用户开启定时任务时,单独开启一个线程进行数据的对比分析,并将采集到的温湿度数值存入数据库中的历史数据表,按照我们正常的逻辑应该是用户在请求开启定时任务时,前端页面通过调用后端接口,创建一个新的线程来执行定时任务,然后在线程类中使用 @Autowired 注解注入保存历史数据的service层,在线程类中调用service层保存历史数据的方法实现温湿度数据的保存,这时就出现了一个很尴尬的问题,在新开启的线程中使用 @Autowire
3 0
大公司和小公司的程序员有什么差别?如何进大公司?
  我在大公司干活前,基本都在小公司之间辗转,对比两种公司的经历,切身感受到“人往高处走“绝非是空话。我在之前的博文里,多次讲到程序员该去大厂看看,在这篇博文里,将结合我和我朋友的所见所闻,从技术和发展前景等方面,综合讲述小公司和大公司里程序员的普遍差别,以此再让大家感受下大公司经历的重要性。不过本文不是停留于此,还更将针对小公司干杂事的程序员,给出逆袭到大厂的若干建议,好正文开始。
3 0
【智能合约】Go语言调用以太坊 | geth
目录 1. geth 简介 1.1 下载地址: 1.2 安装: 1.3 查看是否安装成功 2. geth命令介绍 3. geth常用命令 3.1 指定数据目录 --datadir 3.2 账户相关 3.3 控制台console: 3.4 删除数据: 3.5 help 3.6 常见错误 4. Go语言调用合约 4.1 启动rpc端口 4.2 Go调用以太坊 4.3 调用接口 net_version net_listening net_peerCount eth接口 personal接口 db接口 最后
3 0
+关注
行者武松
杀人者,打虎武松也。
14545
文章
2569
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载