Caractère non valide

Signaler
Messages postés
27
Date d'inscription
samedi 17 mai 2014
Statut
Membre
Dernière intervention
4 novembre 2015
-
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
-
Bonjour,

Sur mon site, j'ai un problème: je veux bien mettre "UTF-8", mais il n'a aucun effet, je continu a voir les '?' à la place des 'é' , 'à', 'è', ect.

Voici mon code:

<!DOCTYPE html>
<html>
<head>
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>

<h1>Uploader de fichiers</h1>
<br>
<br>
<br>
<form action="" enctype="multipart/form-data" method="post" onsubmit="return confirm('L\'upload de votre fichier peut prendre un certain nombre de temps, dépendamment de son poids. Veuillez s\'il vous plait patienter, nous vous avertirons lorsque votre fichier sera prêt. Merci.');">
La date d'aujourd'hui (ex: jours/mois/année) : <input class="date" name="date" type="date" /> <br><br>
 Votre fichier (pour l'instant, vous ne pouvez choisir que un fichier à la fois): <input class="file" name="file" type="file" /><br><br>
Votre nom (ou le titre de votre ficher) : <input class="text" name="text" type="text" /><br><br>
Description de votre fichier : <input class="text1" name="text1" type="text" /><br><br>

<input id="Submit" name="submit" type="submit" value="Envoyer les fichiers!" />


</form>
<a href="uploads/">Chercher vos fichiers que vous avez télécharger!</a>
<br><br><br><br>
<?php
 
// Upload and Rename File
 
if (isset($_POST['submit']) AND isset($_POST['text']) AND isset($_POST['date']) AND isset($_POST['text1']))
{
$text = $_POST["text"];
$date = $_POST["date"];
$desc = $_POST["text1"];
	$filename = $_FILES["file"]["name"];
	$file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
	$file_ext = substr($filename, strripos($filename, '.')); // get file name
	$filesize = $_FILES["file"]["size"];
	$allowed_file_types = array('.doc','.docx','.rtf','.pdf','.php','.html','.js','.jpg','.png','.mp4','.tif','.txt','.app','.ipa','.apk','.JPG','.jpeg','.ini','.rar','.zip','.dmg','.exe','.msi','.wmv','.7z','.pptx','.mov','.pps','.xlsx','.tar','.mov','.mp3','.m4a','.wma');	
 
	if (in_array($file_ext,$allowed_file_types) && ($filesize < 90000000))
	{	
		// Rename file
		$newfilename = $date . '.'  . $text . " ( $desc ) " . $file_ext;
		if (file_exists("./uploads/" . $newfilename))
		{
			// file already exists error
			echo '<p style="color:red;">Le fichier que vous venez de choisir existe déjà sur le serveur.<br> Veuillez renommer votre fichier « $file_basename$file_ext » .</p> ';
		}
		else
		{		
			move_uploaded_file($_FILES["file"]["tmp_name"], "./uploads/" . $newfilename);
			echo '<p style="color:#257E78;">Votre fichier <a href="uploads/'.$newfilename.'">'.$file_basename.'</a> a été télécharger avec <u>succès!</y></p><br>';		
		}
	}
	elseif (empty($file_basename))
	{	
		// file selection error
		echo '<p style="color:red;">S\'il vous plait, choisir un fichier avant de le télécharger.</p>';
	} 
	elseif ($filesize > 90000000)
	{	
		// file size error
		echo '<p style="color:red;">Le fichier '.$file_basename.' que vous venez de choisir est trop lourd pour le serveur :( .</p>';
	}
	else
	{
		// file type error
		echo '<p style="color:red;">Seulement ces types de fichiers sont acceptés:</p>'  . implode(', ',$allowed_file_types);
		unlink($_FILES["file"]["tmp_name"]);
	}
}
 
?>
<style>
body {
background-color: #B1C392;
}
.file {
font-size: 20px;
}
input[type="submit"] {
text-align: center;
bottom: 0px;
left: 600px;
right: 500px;
 position: fixed;
width: 155px;
height: 50px;
font-size: 1em;
margin-bottom: 5px;
background-color: #1E3944;
color: #DFD6AE;
border-radius: 10 10 10 10;
}
input[type="date"], input[type="text"] {
text-align: center;
display: block;
float: right;
color: #DFD6AE;
border-radius: 20 20 20 20;
}
h1 {
font-size: 100px;
color: #274245;
}
* {
font-family: Helvetica Neue, sans-serif;
font-weight: lighter;
text-align: center;
font-size: 40px;
color: #274245;
}
.file::-webkit-file-upload-button {
  visibility: hidden;
}
.file::before {
  content: 'Choisir des fichiers';
  display: inline-block;
  background: -webkit-linear-gradient(top, #f9f9f9, #e3e3e3);
  border: 1px solid #999;
  border-radius: 3px;
  padding: 5px 8px;
  outline: none;
  white-space: nowrap;
  -webkit-user-select: none;
  cursor: pointer;
  text-shadow: 1px 1px #fff;
  font-weight: 700;
  font-size: 10pt;
}
.file:hover::before {
  border-color: black;
}
.file:active::before {
  background: -webkit-linear-gradient(top, #e3e3e3, #f9f9f9);
}
</style>
</html>


Merci d'avance!

3 réponses

Messages postés
49
Date d'inscription
vendredi 30 mai 2014
Statut
Membre
Dernière intervention
4 octobre 2016
3
ce code marche bien chez moi essaie encore . si ca ne marche pas tu peut utiliser Javascript pour rechercher et remplacer les caractereambigue de ta page.
Messages postés
27
Date d'inscription
samedi 17 mai 2014
Statut
Membre
Dernière intervention
4 novembre 2015

Non, ça ne marche toujours pas. Toujours ces petits "?" dans un losange noir.

Comment puis-je utiliser votre technique avec le Javascript?
Messages postés
31604
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mars 2021
344
Les problèmes d'encodage peuvent également venir de l'encodage de ton fichier texte ( html .. php ..).
Dans ton éditeur de texte (celui que tu utilises pour écrire ton code).. tu as surement une option pour choisir l'encodage à utiliser.
Sinon.. tu prends notepad++ ... tu ouvres tes fichiers.. tu vérifies que l'encodage est en UTF8 .. tu sauvegardes tes fichiers.. et tu les remets sur le serveur.

Si les caractères accentués proviennent de ta Base de données.. il faudrait déjà regarder comment ils sont codés dedans .....

Après.. pour afficher du texte provenant de ta BDD .. tu peux regarder du côté de l' HTML_ENTITY_DECODE http://php.net/manual/fr/function.html-entity-decode.php
et aussi autour des fonction UTF8_ENCODE() et/ou UTF8_DECODE()



Messages postés
31604
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mars 2021
344 >
Messages postés
27
Date d'inscription
samedi 17 mai 2014
Statut
Membre
Dernière intervention
4 novembre 2015

Donc je réitère ma question précédente ....

Ton souci vient ( plusieurs réponses possibles ) :
- Des textes issus de ta base de données ?
- Des textes écrits directement dans ton fichier php ?
- Ca ne le fait qu'avec cette page ?
- Ca le fait avec toutes les pages de ton site ?

Et aussi :

Ton site est hébergé sur un serveur ou en local sur ta machine ?
=> Si tu testes en LOCAL .. as tu le même souci ?
=> Si tu passes par un hébergeur... lequel est-ce ?
Messages postés
27
Date d'inscription
samedi 17 mai 2014
Statut
Membre
Dernière intervention
4 novembre 2015

Il est héberger sur "5freehosting.com".
Oui, il semble que ce n'est que cette page qui a le problème.

Parfois je modifie ma page directement dans le fichier sur le serveur par FTP. Je ne sais pas si sa pourrais être cela. Selon moi non, car j'ai toujours fais ça, et je n'ai jamais eu se problème (sauf si je n'ai pas préciser " <meta charset='UTF-8'> ".
Messages postés
31604
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mars 2021
344
Et pour mes autres questions ?
Messages postés
27
Date d'inscription
samedi 17 mai 2014
Statut
Membre
Dernière intervention
4 novembre 2015
>
Messages postés
31604
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mars 2021

-Je n'ai pas de BDD
-Souvent je modifie directement dans le serveur via FTP
-Oui, que cette page
-Non, sauf si je ne met pas 'UTF-8'

=> Non, je l'héberge
=> Mon serveur est "5freehosting.com"
Messages postés
31604
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
5 mars 2021
344
Et tu peux tester en local pour voir ?
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
4
Bonjour,

Votre problème d'encodage UTF-8 revient de manière réccurente... Je vous rassure, même des "pros" se cassent les méninges sur ce problème.

Ici un article qui explique bien comment maîtriser toute la chaîne de programmation en UTF-8:
http://html5.immo-scope.com/article/general_applisFullUtf8

A+