Crazepony 源代码的文件编码和文件格式 | 少将全栈
  • 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

Crazepony 源代码的文件编码和文件格式

点滴 admin 10年前 (2015-06-27) 1796次浏览 已收录 扫描二维码


文件编码

原则上所有源代码默认使用utf-8编码。

网站源码文件必须使用utf-8编码。如果使用其它的编码,例如中文中常见的gdb格式,会导致中文乱码,或者网页无法生成的问题。

文件编码常识

Windows操作系统默认文件编码是gbk,又叫做gb2312或者cp936。cp936是微软发布的用在文件系统中的编码方式,而
gb2313是中国国家标准,又叫做ANSI格式编码。例如在notepad++编辑器上gb2312编码的文件就显示为ANSI格式编码;使用
Linux下的file命令,则显示为ISO-8859;在Vim下使用set fenc?命令查看,则显示为fileencoding=euc-cn。其实这三种都是表示gb2313编码。

Linux操作系统默认文件编码是utf-8,一般用系统宏$LANG表示。

$ echo $LANG
zh_CN.UTF-8 

下面几个crazepony固件代码文件,就是使用的Windows下的默认编码gb2313。为了在某些工具下(例如
gitk工具)中文不显示为乱码,我们要求所有的文件都使用utf-8编码。但是由于我们现在使用的Keil
4不支持utf-8编码,所以utf-8编码的中文在Keil 4下面会显示为乱码,所以这部分固件代码没有使用utf-8编码。

$ file User_Src/*
User_Src/main.c:           ISO-8859 C++ program text
User_Src/Sys_Fun.c:        ISO-8859 C program text
User_Src/Sys_Fun.h:        ISO-8859 C program text
…… 

行结束符问题

在Linux/Windows/Mac下,行结束符不一样。这样在多个平台之间进行协作开发时,在checkin和checkout之后,会有很多行结束符不统一引起的问题。

添加.gitattribute文件,可以解决行结束符在多个平台下不一致的问题。

# Explicitly declare text files we want to always be normalized and converted 
# to native line endings on checkout.
* text

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary
*.jar binary
*.so  binary
style/fonts/* binary
style/images/* binary 

上面为现在使用的.gitattribute配置,解释如下:

  • 代码库中都为LF,也就是checkin的时候,会把所有文件的行结束符转化为LF;
  • 工作路径下为所在OS的行结束符,也就是在checkout的时候,git回自动根据当前的OS将文件的行结束符做转化;
  • 对于图片(以png/jpg/gif等结尾),jar库,和so文件等二进制文件,不进行转化;

转载自:http://www.crazepony.com/book/

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。