Bonjour,

Dans mon CSS je vais chercher une police de caractères sur mon serveur :

@font-face
{
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'),
url(../font/KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2'),
url(../font/KFOmCnqEu92Fr1Mu4mxM.woff) format('woff');
font-display: swap
/* unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; */
}


Si je teste la page avec Dareboost il est signalé comme une erreur que le jeu de caractères n'est pas spécifié :

The following resources have no character set specified in their HTTP headers. Specifying a character set in HTTP headers can speed up browser rendering.

Pourtant, on niveau de la page html qui appelle le fichier CSS :

<meta charset="UTF-8" />


Et au niveau du script PHP qui crée la page HTML :

header ('Content-Type: text/html; charset=utf-8');


Est-ce une erreur de Dareboost ?

Ou faut-il encore en rajouter une couche pour le CSS ?
Et si oui comment ?

Merci d'avance pour votre aide.
Modérateur
et l'eau,

En haut de ta feuille de styles, tu peux rajouter ça :

@charset "utf-8";


Est ce que ton fichier est écrit en utf-8 ?
Modifié par niuxe (12 Sep 2021 - 12:06)
Bonjour,

Merci de ton suivi.

J'ai ajouté @charset "utf-8"; au début du CSS et je me prends toujours la même alerte.

Spécifiez un jeu de caractères dans vos en-têtes HTTP de réponse

Aucun jeu de caractères n'est spécifié dans les en-têtes HTTP des ressources suivantes. La spécification d'un jeu de caractères permet d'accélérer l'affichage des pages dans le navigateur.

www.monsite.com/[...]off2

En spécifiant le jeu de caractères utilisé dans l'en-tête HTTP Content-Type, vous permettez au navigateur d'analyser immédiatement la page. Par exemple : content-type: text/html; charset=UTF-8.

Lorsque le navigateur reçoit des octets, il doit identifier la collection de lettres et de symboles qui ont été utilisés pour écrire le texte qui a été converti en ces octets, ainsi que le codage utilisé pour cette conversion, afin de l’inverser. Si aucune information de ce type n’a été transmise, le navigateur tentera de trouver des motifs reconnaissables dans les octets pour déterminer l’encodage lui-même, et éventuellement essayer certains jeux de caractères courants, ce qui prendra du temps, retardant le traitement ultérieur de la page.
Comment spécifier un jeu de caractères dans l'en-tête Content-Type ?

Dans l'explication suivante, nous considérerons UTF-8 comme le jeu de caractères à définir, mais n'oubliez pas que le jeu de caractères déclaré dans votre en-tête HTTP Content-Type doit refléter le jeu de caractères utilisé pour encoder le fichier, qui peut ne pas être UTF-8.

Dans Apache 2.2+, la configuration de l’UTF-8 comme jeu de caractères par défaut pour les fichiers de types text/plain ou text/html implique d’utiliser la directive AddDefaultCharset :

AddDefaultCharset utf-8

Pour les autres types de fichiers, vous aurez besoin d’utiliser la directive AddCharset :

AddCharset utf-8 .js .css …

Dans nginx, vous devrez vous assurer que le module ngx_http_charset_module est chargé, puis utiliser la directive charset.

charset utf-8;

Ici aussi, il est possible d’affiner le champs d’application pour que d’autres types de fichiers que text/html soient livrés en UTF-8, en utilisant la directive charset_types :

charset_types text/html text/css application/javascript

- - -

Je ne connais pas ma version d'Appache, je suis sur un mutualisé chez OVH zet dans l'administration je n'ai pas trouvé cette information.

J'utilise dans le script PHP ::

header ('Content-Type: text/html; charset=utf-8');


Aurais-je un meilleur résultat avec :

AddDefaultCharset utf-8


J'aimerais ton avis avant d'essayer.
Bonjour,

Je précise que ma feuille CSS est enregistrée en ANSI.

Peut-être dois-je la passer en UTF-8, là encore j'espère conseil de spécialiste.
Modérateur
Désolé Boteha, Je n'avais pas vu ton message.

Bah voilà ton souci.... Microsoft on t'aime.... Ce qui t'arrive est un cas classique.

1. Encode tes fichiers en utf8
2. configure ton editeur de texte en utf8 (Qu'utilises-tu comme éditeur ?)
Bonjour niuxe,

Merci du suivi.

Donc pendant le week-end (je n'ai pas le temps avant) je fais un test avec la feuille de style CSS enregistrée en UTF-8.

Mes scripts PHP sont déjà en UTF-8

J'utilise Notepad++ pour les CSS et une vieille édition de Dreamwaever pour PHP, les fonctions re rechercher remplacer sont plus sympas qu'avec Notepad++.

Je vous tiens informé.
Bonjour,

Il y a un truc énervant avec Notepad++.

Encodage > Convertir en UTF-8

Dans le menu en bas de page le document apparaît en UTF-8.

Je sauvegarde, je ferme, j'ouvre de nouveau le document avec Notepad++.

Dans le menu en bas de page le document apparaît en ANSI.

Si j'ouvre dans Dreamwaever le document est marqué comme UTF-8.

Du coup je pense que mes CSS sont bien en UTF-8 mais pourquoi Notepad++ ne le voit pas ?
Bonjour,

Une dernière petite chose.

Dareboost me reproche aussi de ne pas indiquer le type de document pour les liens dans la feuille de style.

@font-face
{
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: local('Roboto'),
url(../font/KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2'),
url(../font/KFOmCnqEu92Fr1Mu4mxM.woff) format('woff');
font-display: swap
/* unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; */
}


Il manque donc au navigateur l'information sur le type de du document et sur l'encodage.

Et pourtant...

header ('Content-Type: text/html; charset=utf-8');


Merci d'avance de votre aide.
Bonjour,

Tous mes CSS sont bien encodés UTF-8

A mon avis c'est dans .htaccess que je devrais ajouter quelque chose du genre :

AddCharset utf-8 .js .css …

Je vais me renseigner sur le sujet.