Задать вопрос
danielnewman
@danielnewman
Front-end

С чем связано декодирование CSS без кодировки в cp1251 Chrome?

Не тестировал в других браузерах, но суть, что nginx настроен, по дефолту, как utf-8.
И всё идет гладко, пока не доходит до CSS с кириллицей. Типа:

[data-trainbrand="САПСАН"] {}

В моем chrome оно превращается во что-то типа (это не моя пара кодирование, но для наглядности

[data-trainbrand="‘ЂЏ‘ЂЌ"] {}

В Content-Type стоит "text/css" и больше ничего. Никаких utf-8 или cp1251.
Не очень понимаю дальнейшую механику работы браузера с этой кашей,
но, естественно, никакие перекодированные из utf-8 в cp1251 не будут
работать на HTML utf-8

Проблему решил выставлением жестко через дерективу server следующего куска конфига nginx:

location ~ \.css {
    proxy_hide_header Content-Type;
    add_header Content-Type "text/css; charset=UTF-8";
}

А теперь вопросы:

— Почему кусок конфига из документации, не выставляет кодировку в Content-Type
— С какого Chrome решает, что нужно декодировать документ в локальную виндовую кодировку

<code lang="nginx">
include        conf/win-utf
charset        utf-8;
source_charset utf-8;
</code>

Спасибо.
  • Вопрос задан
  • 336 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
fnnzzz
@fnnzzz
front-end dev
возможно сам файл сохранен в cp1251

В саблайме можно поменять кодировку
FIle -> Save with encoding -> UTF8 with BOM
Ответ написан
sim3x
@sim3x
Кроме перекодирования из 1251 в утф8 самого файла, стоит добавить в начало файла https://developer.mozilla.org/en/docs/Web/CSS/@charset
@charset "UTF-8";
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы