某天早晨七点左右,BOSS打电话来说程序有重大问题,重新编译后,设备上的液晶显示不正常了。液晶是点阵字库来显示的,而且是由另外一块芯片单独驱动显示,所以排除液晶程序问题,应该就在主程序内部有问题。突然发现,窗外面已经下雪了,西北的冬天真是很二。想到我之前一直都是在MAX OSX下开发,所以文件编码已经转换成UTF8了,但字库却还是GBK的。转换后发现还是没有效果,后来查阅GCC编译默认会使用UTF8编码。正在思考时,BOSS说现在添加一行代码,编译后后自动回到上一行,整个代码看起来很乱。电话挂完后,在床上想了半天,抱起MBP打开VIM时,想起在WIN下编写的文本,UNIX/LINUX下用VIM打开结尾会有^M的字符。
换行符,各种系统下对其实现有差异的。尤其是M$家的,使用的是0xd 0xa表示,UNIX/LINUX则基本通一为0xa。问题的源头算是找到了,但是代码是在GIT中管理,那跨平台开发如何保证通一性呢?进而发现GIT也是有坑的。