PHP源码编码与转换:搞定首行为空和“锘匡豢”
撰写于 2011年9月8日 修改于 2017年6月27日 分类 编程杂记
总是有七弯八拐的原因让我们要将自己的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,并非我小人之心所揣测的“舍不得与人分享”的人,他早已将解决的整个过程分享出来。在此,为我自己的武断之为而向您致以深深的歉意!