Bonjour, j'avoue que je n'y comprends plus rien ! En déclarant dans le head de ma page.htm
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
cela engendre la non-reconnaissance des caractères spéciaux dans la value d'un input, comme
&deg;
c'est-à-dire : degré comme pour 0°Celsius Mais si je supprime la meta, tout redevient parfait, possible dans la value de l'input ! Question : en quoi est-ce finalement utile de déclarer le charset=utf-8 quand on peut faire sans (mais avec les &eacute; &agrave; &icirc; etc.) ? Est-ce que cela permet tout de même à un Eta-z-unien de San Francisco de lire mon bon français sur son ordi US, et un Japonais de Tokyo ? Exemple. Pour m'amuser j'avais rédigé cette page de conversion degrés Celsius/Kelvin/Fahrenheit, où le problème s'était posé (copier-coller le code dans votre éditeur de texte, enregistrer sous ... conversion-degres.htm):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>

<title>Converteur Celsius/Fahrenheit</title>

<!-- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -->
<meta name="description" content="Conversion degr&eacute;s Celsius/Fahrenheit. Le z&eacute;ro absolu (zero Kelvin = -273&deg;C -459&deg;F) est consid&eacute;r&eacute;" />

 <style type="text/css">

body{margin:0;font-family:verdana,arial;font-size0.9em}
h1{margin-top:0;color:#ccc;font-weight:normal}
input{outline:0 none}
#global{display:block;position:relative;width:600px;padding:10px;left:50%;margin-left:-310px;margin-top:10px;border:1px solid #ddd}
#notes{font-size:0.8em;margin-top:40px}
.input{display:inline-block;width:50px;text-align:right;padding:0 2px}

</style>

</head>

<body>

<div id="global">

<h1>Celsius/Kelvin/Fahrenheit</h1

<p style="margin-top:0">Saisissez un nombre entier (positif ou n&eacute;gatif) dans les champs de temp&eacute;rature Celsius, Kelvin ou Fahrenheit pour obtenir sa conversion instantan&eacute;e :</p>
<input id="c" name="c" class="input" onkeyup="Convert('C')" value="-273"> &deg;Celsius<br />
=<br /> 
<input id="k" name="k" class="input" onkeyup="Convert('K')" value="0"> &deg;Kelvin <span style="font-size:0.7em">1 degr&eacute; Kelvin vaut 1 degr&eacute; Celsius, dont le z&eacute;ro (le froid absolu) est positionn&eacute; à -273&deg;Celsius</span><br />
=<br /> 
<input id="f" name="f" class="input" onkeyup="Convert('F')" value="-459"> &deg;Fahrenheit 

<p id="notes">
NOTES
<br />
&bull; La m&eacute;thode JS Math.round() est employ&eacute;e ; ainsi la saisie et les conversions seront toujours un nombre entier.
<br />
&bull; Consid&eacute;rant le <b>froid absolu</b> (-273,15&deg;Celsius = 0&deg;Kelvin = -459,67&deg;Fahrenheit), le calcul est retourn&eacute; <i>impossible</i> pour des valeurs inf&eacute;rieures car le script de conversion est argument&eacute; en ce sens ... Dans la r&eacute;alit&eacute; on ne peut encore tout constater ou th&eacute;oriser : quel est l'&eacute;tat d'une mati&egrave;re o&ugrave; ses constituants (protons, &eacute;lectrons, noyau des atomes) sont amput&eacute;s de la moindre &eacute;nergie (fig&eacute;s sur place, l&eacute;vites ou implos&eacute;s) ? Et existe-t-il un &eacute;tat possible de la mati&egrave;re en-dessous du Z&eacute;ro absolu ? Th&eacute;oriquement non, or oui et autrement que par champs magn&eacute;tiques oppos&eacute;s ... &Agrave; lire un article du Figaro (17/01/2013) : <a href="http://www.lefigaro.fr/sciences/2013/01/17/01008-20130117ARTFIG00439-des-atomes-portes-sous-le-zero-absolu-en-laboratoire.php" target="_blank"><i>Des atomes portés sous le zéro absolu en laboratoire</i></a>
</p>

</div>

<script type="text/javascript">

impossC="Calcul impossible en dessous de -273°Celsius";
impossF="Calcul impossible en dessous de -459°Fahrenheit";
impossK="Calcul impossible en dessous de 0°Kelvin";

	function Imposs()
{
f.value = impossF;
c.value = impossC;
k.value = impossK;
c.style.width='300px';
f.style.width='300px';
k.style.width='300px';
setTimeout(function(){c.value='-273';f.value='-459';k.value='0';c.style.width='50px';f.style.width='50px';k.style.width='50px'},4500);
}

	function Convert(degree)
{
if (degree == "C")
	{
F = document.getElementById("c").value * 9 / 5 + 32;
K = document.getElementById("c").value * 1 + 273;
document.getElementById("f").value = Math.round(F);
document.getElementById("k").value = Math.round(K);
if(c.value<(-273))
		{
Imposs()
		}
	}
else if(degree == "F")
	{
C = (document.getElementById("f").value -32) * 5 / 9;
K = ((document.getElementById("f").value -32) * 5 / 9) + 273;
document.getElementById("c").value = Math.round(C);
document.getElementById("k").value = Math.round(K);
if(f.value<(-459))
		{
Imposs()
		}
	}
else if(degree == "K")
	{
C = document.getElementById("k").value * 1 - 273;
F = document.getElementById("k").value * 9 / 5  - 459;
document.getElementById("c").value = Math.round(C);
document.getElementById("f").value = Math.round(F);
if(k.value<0)
		{
Imposs()
		}
	}
}

</script>

</body>

</html>
Vu sur le web, tout près de chez vous : upload/57133-biztrange.jpg upload/57133-maitriser.jpg
Modifié par senteur_honrable (30 Jan 2015 - 04:56)
Les entités ne servent qu'à te permettre d'écrire des caractères plus facilement, ou des caractères que tu souhaites représenter mais qui n'existent pas dans le contexte d'écriture du code source. En théorie, en 2015 et avec l'encodage UTF-8, les seules entités qu'on devrait utiliser car elles sont inévitables, c'est &lt &gt &amp &quot et &apos. Tout le reste c'est juste de la facilité d'écriture. Dans ton cas ça t'es peut-être pratique à toi parce que tu n'as pas une touche degré sur ton clavier; pour le visiteur, que ça soit écrit sous forme d'entité ou en clair, ça ne change absolument rien, du moment que le bon encodage est servi et que le navigateur connaît cet encodage. Ca peut être utile aussi si tu sers de l'UTF-8, mais que pour une raison ou une autre ton code source doit absolument être écrit dans un autre encodage, p.ex. pur ASCII. Ca m'arrive de le faire pour éviter le fameux BOM dans certains cas.
Bonjour QuentinC,
en déclarant la meta charset=utf-8, j'obtiens ceci (screenshot du navigateur) :

upload/57133-degre.jpg

quand j'avais rédigé dans mon éditeur bloc-note cela (screenshot de l'éditeur de texte) :

upload/57133-script.jpg

Or sans cette meta charset=utf-8, tout est correct dans la value des input ! mais par contre hors d'un input, je dois persister à écrire les caractères spéciaux &deg; &eacute; &agrave; &icirc; ... pour pouvoir être bien lu.

Ta réponse, je le crains n'explique en rien mon désordre.
Modifié par senteur_honrable (30 Jan 2015 - 22:22)
J'ai glané une bonne info qui semblerait résoudre (en partie) mon problème :
http://www.prelude.me/index.php/2011/01/15/utf-8-avec-ou-sans-bom/

puis et surtout : nécessairement enregistrer sous ... ma rédaction de page.htm / Codage : utf-8 (pas ANSI ni UNICODE)

Ainsi, la déclaration de la meta charset=utf-8 est pertinente, et ne perturbe en rien les caractères spéciaux de mon clavier : frapper directement au clavier les ° é à è â ô ù £ % ... pour qu'ils apparaissent sans erreur dans la value d'un input
Modifié par senteur_honrable (30 Jan 2015 - 22:24)