首先说明一下什么是BOM:
BOM: Byte Order MarkUTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。
我在编译ARM汇编程序时,总是出现Error: bad instruction `'等等错误,经过认真分析,发现代码没有任何问题,应该是编码的问题,因为我平时习惯把所有文件都保存为UTF-8格式以方便在windows和linux之间查看,没有考虑到BOM有无问题,经UE多次更换保存格式后,发现使用UTF-8无BOM才能让编译顺利通过,这才发现UTF-8的BOM对ARM汇编无用,所以平时一般采用UTF-8无BOM格式即可。
经过网络搜索的答案,有许多关于保存php文件要用UTF-8无BOM格式,否则也会出现许多莫名其妙的问题,看来文件格式相当重要。
在交叉编译arm汇编过程中,我还遇到一个““的警告,在文件最后补一个新行即可。后搜的问题答案为Unix文档的回车换行符是一个字符\n,Windows的是分别的两个\n\r,所以你在Windows下编辑的最后一个字符是\r不是\n,所以编译器以为有错误。
补充:刚自己写了一个注册表文件时,发现不能系统提示不能添加二进制注册表,发现原来又是编码在作怪,平时内容都是UTF-8,这里系统注册表不能识别了,后另存为ANSI格式就可以重新导入注册表了!!
另:win7要在当前目录打开DOS,省去在DOS下繁琐地输入命令进入当前目录的方法,方法一:可以按住shift再右键当前目录,点“在此处打开命令窗口”进入DOS下的该目录。方法二:将以下内容保存成一个*.reg的注册表文件,双击导入系统即可,注意保存格式要为ANSI!!
1 Windows Registry Editor Version 5.002 3 [HKEY_CLASSES_ROOT\Folder\shell\Open_DOS_Box]4 @="[进入DOS目录]"5 6 [HKEY_CLASSES_ROOT\Folder\shell\Open_DOS_Box\command]7 @="cmd.exe /s /k pushd \"%V\""