2012-04-28 19 views
13

usar¿Por qué Sass antepone una regla de @charset incorrecta?

sass --watch scss:css 

tener Sass crear automáticamente archivos CSS (y ponerlos en el directorio /css) para cada archivo SCSS (de mi directorio /scss).

En mi archivo SCSS tengo esto:

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

Cuando pruebo la página web en el navegador, que "jugar" no se muestra el carácter - en vez veo un montón de cartas extrañas con carons y otros acentos.

inspeccioné el archivo CSS generado y dado cuenta de esto en la primera línea:

@charset "CP852"; 

entonces cambió manualmente que a esto:

@charset "UTF-8"; 

que resultó en mi botón "Play" que se queden correctamente.

Ahora, ¿por qué Sass establece el juego de caracteres en "CP852"? Estoy escribiendo el archivo SCSS en PhpStorm que informa que el archivo SCSS está codificado en UTF-8 (lo veo en la barra de estado de PhpStorm).

+2

¿Qué sucede si usa su notación escapada: '\ 25B6'? – Knu

+0

+1 ¡Guau! No tenía idea de que 'content:" \ 25B6 "' funciona. ':)' Sin embargo, la pregunta es por qué SASS establece un juego de caracteres incorrecto, por lo que no puedo aceptar esta respuesta. –

+0

Además, usar la notación escapada NO es una buena opción porque está visualizando caracteres incorrectos DEBIDO al juego de caracteres incorrecto, lo que significa que no ha resuelto este problema para todos los demás caracteres en el juego de caracteres incorrecto que potencialmente es enorme. se trata de localización. Mejor arregle este problema en la fuente en lugar de piratearlo: definición explícita del juego de caracteres por la respuesta exceptuada. – dudewad

Respuesta

30

Intente agregar @charset "UTF-8"; a su archivo SCSS original, SASS no debe anularlo/agregar el suyo entonces.

+4

Parece que '@charset" UTF-8 "' tiene que estar en la primera línea de la hoja de estilos. – feklee

+5

Cita de [SASS_REFERENCE] (http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options): * Agregue @charset "nombre-codificación"; al comienzo de la hoja de estilo (antes de cualquier espacio en blanco o comentarios) y Sass lo interpretará como la codificación dada. * – feklee

+0

Ese fue mi problema también, tenía un comentario encima. Ponerlo en la primera línea lo arregló, ¡salud! – ConorLuddy

5

Al igual que @ Alireza-Fatahi establece en this answer, usted podría ahorrar una línea de salida de CSS y en lugar de ir a un defecto juego de caracteres en archivos externos, mediante la adición de esta línea a su config.rb en su carpeta de proyecto:

Encoding.default_external = "UTF-8" 
Cuestiones relacionadas