2012-04-28 8 views
13

utilizzarePerché Sass antepone una regola @charset errata?

sass --watch scss:css 

avere Sass creare automaticamente file CSS (e metterli nella directory /css) per ciascun file SCSS (dalla mia directory /scss).

Nel mio file SCSS ho questo:

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

quando prova la pagina web nel browser, che "giocare" il carattere non viene visualizzato - invece vedo un mucchio di lettere strane con carons e altri accenti.

ho ispezionato il file CSS generato e notato questo nella prima riga:

@charset "CP852"; 

Ho poi cambiato manualmente che a questo:

@charset "UTF-8"; 

che ha portato nel mio pulsante "Play" viene eseguito il rendering correttamente.

Ora, perché Sass imposta il set di caratteri su "CP852"? Sto scrivendo il file SCSS in PhpStorm che segnala che il file SCSS è effettivamente codificato in UTF-8 (lo vedo nella barra di stato di PhpStorm).

+2

Cosa succede se si utilizza la notazione in escape: '\ 25B6'? – Knu

+0

+1 Wow! Non avevo idea che 'content:" \ 25B6 "' funzioni. ':)' Tuttavia, la domanda è perché SASS imposta un set di caratteri errato, quindi non posso accettare questa risposta. –

+0

Inoltre, usare la notazione di escape non è una buona scelta perché stai vedendo una visualizzazione di caratteri errata A CAUSA del set di caratteri errato, il che significa che non hai risolto questo problema per tutti gli altri caratteri nel set di caratteri errato che è potenzialmente un problema ENORME quando si tratta di localizzazione. Meglio correggere questo problema all'origine piuttosto che hackerarlo: definizione charset esplicita per la risposta esclusa. – dudewad

risposta

30

Provare ad aggiungere @charset "UTF-8"; al file SCSS originale, SASS non deve sovrascriverlo/aggiungere il proprio.

+4

Sembra che '@charset" UTF-8 "' debba trovarsi nella prima riga del foglio di stile. – feklee

+5

Citazione da [SASS_REFERENCE] (http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options): * Aggiungi @charset "nome-codifica"; all'inizio del foglio di stile (prima degli spazi bianchi o dei commenti) e Sass lo interpreterà come codifica fornita. * – feklee

+0

Anche questo era il mio problema, avevo un commento sopra di esso. Mettendolo in prima linea lo ha risolto, evviva. – ConorLuddy

5

Come @ Alireza-Fatahi afferma in this answer, si potrebbe risparmiare una linea in uscita CSS e invece andare per un default Charset su file esterni, con l'aggiunta di questa riga al vostro config.rb nella cartella del progetto:

Encoding.default_external = "UTF-8"