PHP源码编码与转换:搞定首行为空和“锘匡豢”

撰写于 2011年9月8日 修改于 2016年7月23日 分类 PHP 标签 php

总是有七弯八拐的原因让我们要将自己的PHP源码从GB2312转换到UTF8,而90%的情况下你会遇到麻烦——很有可能你已经不是第一个想将你手头的系统转换到UTF8的人,只不过前面那些人都被整郁闷了,因而你也有了这个机会。

1、编码转到UTF-8可能出现的问题

转换起来并不麻烦,而且网上有很多工具可以用于转换,但不推荐使用工具进行批量转换,编码转换时的不确定因素太多,比如原编码,甚至系统语言等,都会引起转换的失败。

PHP源码直接转换到UTF-8后,很有可能会遇到下面的两个问题:

  • 1、首行代码为空;
  • 2、顶行有多个“锘匡豢”;
    当然,很多人已经解决了,还发了博文——不过这文章是让你郁闷的。这位用了两天时间终于解决了问题,但却舍不得与人分享一下。当然也有很靠谱的人,提供了使用VS进行解决的方法,不过搞PHP开发的还装VS的可能不多。

导致出现以上问题的原因,可以看一下维基BOM词条,解决的方法也很简单,转换成UTF8后,将BOM的问题解决即可。很多人使用UltraEdit32,这也是个方法。不过还有更方便的选择,使用Notepad++会更简单,更安全

2、使用Notepad++进行转换的方法

使用Notepad++,打开所有需要转换的文件,然后战壕菜单“Encoding(编码)”→“Convert to UTF-8 without BOM(转换为UTF-8无BOM编码格式)”,再保存文件,即可完成无恙转换。

顺便提一下,Notepad++的确是一个非常优秀的编辑器,完全可以作为你Win下的主力代码工具——它已经是win下我唯一用的代码工具了。

3、转换中需要注意的问题

转换很简单,但还需要注意以下几个方面的问题:

  • 1、HTML中HEAD部分中对编码的指定,一般可能设置了charset,将值改成UTF8即可;
  • 2、apache等web服务器中的默认编码设置,CentOS中的apache在httpd.con里修改,搜索“AddDefaultCharset”,将后面的值改为UTF-8;
  • 3、CSS文件编码的修改;
    淘宝也是用的gbk,转换起来一定又是一个折腾人的过程。

抱歉:上文中所提到的那篇“让人郁闷的文意”的博主tunpishuang,并非我小人之心所揣测的“舍不得与人分享”的人,他早已将解决的整个过程分享出来。在此,为我自己的武断之为而向您致以深深的歉意!

Site by Yifei Zhang using Hexo & Random

Yifei Zhang的博主是一名Node.js程序员,博客的内容会涉及电影 / 生活 / 吐槽 / JavaScript / PHP / Node.js / Express / MongoDB / MySQL / Redis / AngularJS / jQuery / HTML。

Hide