2012-04-28 27 views
13

używamDlaczego Sass stosuje niepoprawną regułę @charset?

sass --watch scss:css 

mieć Sass automatycznie tworzyć pliki CSS (i umieścić je w katalogu /css) dla każdego pliku SCSS (z mojego katalogu /scss).

W moim pliku SCSS mam to:

.foo::before { 
    content: "▶"; 
} 

Kiedy przetestować stronę internetową w przeglądarce, że „grać” charakter nie jest wyświetlany - zamiast widzę kilka dziwnych listów z carons i inne akcenty.

I kontrolowane wygenerowany plik CSS i zauważyłem, to w pierwszej linii:

@charset "CP852"; 

Następnie ręcznie zmienił że do tego:

@charset "UTF-8"; 

co spowodowało mój przycisk "Play" są renderowane prawidłowo.

Dlaczego Sass ustawia zestaw znaków na "CP852"? Piszę plik SCSS w PhpStorm, który zgłasza, że ​​plik SCSS rzeczywiście jest zakodowany w UTF-8 (widzę to na pasku stanu PhpStorm).

+2

Co się stanie, jeśli użyjesz jego notacji z uniknięciem: '\ 25B6'? – Knu

+0

+1 Wow! Nie miałem pojęcia, że ​​"content:" \ 25B6 "' działa. ':)' Jednak pytanie brzmi, dlaczego SASS ustawia niepoprawny zestaw znaków, więc nie mogę przyjąć tej odpowiedzi. –

+0

Używanie notacji z unikami NIE jest dobrym wyborem, ponieważ wyświetlany jest niepoprawny znak WYŚWIETLANY ZŁEGO zestawu znaków, co oznacza, że ​​nie rozwiązałeś tego problemu dla wszystkich innych znaków w niepoprawnym zestawie znaków, który jest potencjalnie OGROMNYM problemem, gdy dochodzi do lokalizacji. Lepiej rozwiązać ten problem u źródła, zamiast go hakować: definicja jawnego zestawu znaków dla odpowiedzi wyjątkowej. – dudewad

Odpowiedz

30

Spróbuj dodać @charset "UTF-8"; do oryginalnego pliku SCSS, SASS nie powinien go przesłonić/dodać go wtedy.

+4

Wygląda na to, że '@charset" UTF-8 "' musi znajdować się w pierwszym wierszu arkusza stylów. – feklee

+5

Cytat z [SASS_REFERENCE] (http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options): * Dodaj @charset "kodowanie-name"; na początku arkusza stylów (przed jakimikolwiek spacjami lub komentarzami) i Sass zinterpretuje to jako dane kodowanie. * – feklee

+0

To był również mój problem, miałem komentarz powyżej. Umieszczenie go w pierwszej linii naprawił, okrzyki. – ConorLuddy

5

Jak @ Alireza-Fatahi stwierdza w this answer, można zapisać linię produkcji CSS i zamiast iść na Domyślny zestaw znaków w plikach zewnętrznych, dodając ten wiersz do config.rb w folderze projektu:

Encoding.default_external = "UTF-8" 
Powiązane problemy