Encoding 如何删除不需要的@charset";UTF-8“;来自CSS(在编译SASS文件后显示)
快速总结我们的问题:Encoding 如何删除不需要的@charset";UTF-8“;来自CSS(在编译SASS文件后显示),encoding,character-encoding,compilation,sass,Encoding,Character Encoding,Compilation,Sass,快速总结我们的问题: 我们已经在编译的CSS文件前添加了一个@charset声明 我们的SCSS文件没有此声明,因此在编译过程中会添加此声明 我的一位同事说,如果我们有这样的声明,我们的网站将在Safari中中断 SASS文件说: 输出编码 通常,Sass将尝试使用与输入样式表相同的编码对输出样式表进行编码。但是,为了做到这一点,输入样式表必须有@charset声明;否则,Sass将默认将输出样式表编码为UTF-8。此外,如果输出不是纯ASCII,它将向输出中添加@charset声明 当带有
- 我们已经在编译的CSS文件前添加了一个@charset声明
- 我们的SCSS文件没有此声明,因此在编译过程中会添加此声明
- 我的一位同事说,如果我们有这样的声明,我们的网站将在Safari中中断
有人知道我们如何检查所有SCSS文件上的“如果不是纯ASCII”假设吗?
还有其他想法吗?据我所知,
@charset
非常支持所有浏览器,另请参见:。只能找到“旧”问题,只有在CSS文件开头未声明@charset
时才会发生。另见:
当您使用grunt编译SASS文件时,您可以在编译任务之后运行一个额外的任务,该任务将删除@charset声明。我可以为您更换。此外,我最近遇到了这个问题。我们使用gulpsass来编译我们的CSS。据我所知,gulp sass(使用节点sass)没有提供任何停止
@charset“UTF-8”的方法代码>如果CSS上有非ascii字符。这对我们来说是个问题,因为我们想在AMP页面上使用相同的CSS@AMP页面上不允许使用字符。请参阅此问题
我们的解决方案
我所做的是添加一个简单的gulp任务,从编译的CSS中删除编码属性
gulp.task('amp-sass-clean-up', ['amp-sass' /*Add gulp-sass task that compiles CSS*/], function() {
return gulp
.src(['/public/amp.min.css' /*This is the full path and file name to where your final css is*/], {cwd: '/public' /*This is the full path to where final css file is*/)
.pipe(replace('@charset "UTF-8";', ''))
.pipe(gulp.dest('/public' /*This is the full path to where final css file is*/);
});
你的CSS中有UTF-8字符吗,甚至在注释中?您正在运行什么版本的Ruby和Sass?你在用指南针吗;哪个版本?您希望CSS用什么字符集编译?您是否碰巧使用Codekit来编译SASS?当我这样做时,我也会在编译的CSS文件中得到一个字符集声明。当我通过终端/gulp编译它时,我不使用。@NilsKaspersson不,我们不使用Codekit。@KatieK我们的评论中有字符,如ø、ruby 2.0.0p451(2014-02-24修订版45167)、sass-3.3.7,我们使用Grunt编译。你找到解决方案了吗?谢谢,是的,字符串替换对我有用。在我的例子中,我在已处理的输出上加盖法律/联系人标题,然后显示在编码声明之前。。。引起问题。这正是我为同一问题所做的。请注意,上面的示例(大概)使用来执行替换。