删除visual studio中的隐藏文件结束字符(BOM)

时间:2011-05-23 15:27:59

标签: .net batch-file copy cmd hidden-characters

我正在使用批处理文件来连接我的所有css文件

copy /b reset.css+action-plan.css+buttons.css+behaviours.css+footer.css+forms.css+header.css+home.css+layout.css+lightbox.css+print.css+questionnaire.css+typography.css+you-told-us.css main.css

我之前在各种项目上做过很多次,但是这个项目使用.NET,所有文件都在visual studio中编辑。

我遇到的问题是在每个文件的末尾添加了一些神秘的隐藏字符,这些字符在连接时会导致生成的css无效。

 126  BLOCKQUOTE, Q   Lexical error at line 119, column 1.
 Encountered: "?" (63), after : "" ??? /**** left column ****/ 

所有单独的CSS文件都会验证,并且只有单个文件加入时才会在组合文件中抛出错误。

3 个答案:

答案 0 :(得分:8)

问题在于文件中的字节顺序标记(BOM)。字节顺序标记用于unicode文件,以告诉处理器字节的顺序。你可以在这里阅读更多相关信息:

http://en.wikipedia.org/wiki/Byte_order_mark

问题在于Visual Studio正在将这些标记添加到您的css文件中,当您通过连接将它们组合在一起时,BOM会在文本的中间结束,搞砸了。

当您转到“另存为”对话框时,可以展开“保存”按钮以查看“使用编码保存”选项。这将提示您输入不同的编码,我认为其中一个Unicode选项会遗漏BOM(列表中的某个位置是UTF-8,没有签名)。

我不知道默认情况下如何将Visual Studio设置为使用特定的编码。

为了解决问题,我创建了一个程序来连接符合BOM的文件。我使用它而不是复制,或使用unix cat。

答案 1 :(得分:0)

您可能希望使用YUICompressor .NET,而不是自己编写脚本。

答案 2 :(得分:-1)

I wrote a nifty little command line program将目录中的所有文件(即css等)组合在一起,并为您删除BOM(字节顺序标记)。这是大约5行代码,并使用cssmin.js来处理缩小。还有一个示例,说明它在Visual Studio后期构建事件中的外观。检查o