Encodage => nom de dossier windows dans page HTML en utf8

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Encodage => nom de dossier windows dans page HTML en utf8

Re: Encodage => nom de dossier windows dans page HTML en utf

par schim59 » 10 janv. 2013, 13:48

Je vais faire ça.
Ca me permettait de faire un uplaod sans trop de contrainte pour l’utilisateur (moi en l’occurrence).

Je vais travailler avec les expressions rationnelles et/ou une table d'équivalence aussi pourquoi pas. L'occasion est bonne non ?

Peut être faire ça : FILTER_VALIDATE_REGEXP au moment de l'upload pour choisir le nom du dossier sauvegardé.

CA m'embete quand même de pas trouver de solution au niveau traduction de l'encodage lui-même.
JE vais me replonger dans les bouquins...

Re: Encodage => nom de dossier windows dans page HTML en utf

par xTG » 10 janv. 2013, 09:35

Euh... Tu as une virgule dans ton nom de dossier ? :shock:
C'est chercher à aller en enfer ton tintouin...

Ne serais-t-il pas plus simple de renommer correctement ton SI ?
Et au pire d'utiliser une table de correspondance (nom <=> nom réel de fichier) dans ta base de données si tu cherches à afficher des noms de ce type.
C'est ce que tout développeur fait sans même y penser dans des cas comme le tien.

Re: Encodage => nom de dossier windows dans page HTML en utf

par schim59 » 10 janv. 2013, 08:29

Slt,

J'&ai ajouté cela en debut de code :
$var=scandir($dir);
	foreach($var as $elem)
	{
		$elem=utf8_decode($elem);
		$elem=iconv("UTF-8", "ISO-8859-1//TRANSLIT", $elem);
de façon a travailler en iso mais rien n'y change le fichier reste introuvable.

Et apache me réponde sans relache :
( ! ) Warning: scandir(NFA006-Structures de donnees/,NFA006-Structures de donnees/) [function.scandir]: Le fichier sp�cifi� est introuvable. (code: 2) in D:\wamp\www\predev\functions.php on line 5
Call Stack
# Time Memory Function Location
1 0.0002 373696 {main}( ) ..\traitement_list.php:0
2 0.0006 389912 parcour( ) ..\traitement_list.php:96
3 0.0006 389944 scandir ( ) ..\functions.php:5
ou
Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:\wamp\www\predev\functions.php on line 9
Call Stack
si j'enleve la ligne utf8_encode


voila si ca peut aider les encodage recensé :

Image

Re: Encodage => nom de dossier windows dans page HTML en utf

par xTG » 08 janv. 2013, 14:42

Tentes de passer une chaîne en iso à scandir, il n'apprécie peut être pas l'utf-8.
Il faut savoir qu'il y a bon nombre de fonction du PHP qui malgré toutes les configurations qu'on peut effectuer resteront en iso.

M'enfin, c'est pas le genre de problème qu'on a l'habitude de gérer, vu qu'on ne nomme au grand jamais des fichiers ou dossiers avec des caractères spéciaux ou accentués. ;)

Re: Encodage => nom de dossier windows dans page HTML en utf

par schim59 » 08 janv. 2013, 13:09

Mais quand je clique sur :

Image


ba ca marche :

Image


Voila ma fonction :
(on se moque pas hein)
function parcour($dir)
{
$var=scandir($dir);
	foreach($var as $elem)
	{
			if(is_dir($dir.$elem)==true)
			{
				if( $elem == '.' or $elem == '..' )continue;
	?>
				
					
				<form action="traitement_list.php" method="post">
					
					<input type="hidden" value="<?php echo utf8_encode($dir).utf8_encode($elem);?>" name="dossier"/>
				<pre>-><input type='submit' class="btn btn-link" value="<?php echo utf8_encode($elem); ?>" name="submit"/></pre>
				</form>
			
			
	<?php
			}

			if(is_file($dir.$elem)==true)
			{
	?>

			<p><a href="<?php echo $dir.$elem; ?>" target="_blank"><?php echo utf8_encode($elem); ?></a></p>
			
	<?php
			}

	}
}


?>

Re: Encodage => nom de dossier windows dans page HTML en utf

par schim59 » 08 janv. 2013, 13:04

Le message quand je clique sur se lien là :

Image

( ! ) Warning: scandir(courscnam/NFA007-Méthodes pour l'informatisation/,courscnam/NFA007-Méthodes pour l'informatisation/) [function.scandir]: Le fichier sp�cifi� est introuvable. (code: 2) in D:\wamp\www\predev\functions.php on line 5

Re: Encodage => nom de dossier windows dans page HTML en utf

par schim59 » 08 janv. 2013, 12:54

Merci de m'aider,
<meta charset="utf-8">
Dans le head

Re: Encodage => nom de dossier windows dans page HTML en utf

par xTG » 08 janv. 2013, 12:29

Ton autre page elle est en quoi ? utf-8 aussi ?

Encodage => nom de dossier windows dans page HTML en utf8

par schim59 » 08 janv. 2013, 11:35

Bonjour,

Je reçoit des nom de dossier par l'utilisation de la fonction scandir().
Le nom de dossier je le transforme en lien cliquable pour utiliser la fonction scandir() (si c'est un dossier et le télécharger si c'est une fichier).

Le problème : quand le nom de dossier comporte un caractère spéciale j'ai un message d’erreur du serveur php du genre scandisc() impossible car "fichier introuvable" après avoir cliqué dessus.

J'utilise de l'utf-8 a réception du dossier pour bien que le nom soit affiché dans ma page en utf-8. Quand je teste le nom a reception avec la fonction mb_detect_encoding() je crois que c'est de l'ansi ou acssi.

Je vous donne le code ou le site ? ou les 2 ?

D'avance merci.

Synthèse du blème :
1- je récupère le nom de dossier (qui contient un é)
2- je l'affiche en utf8. L'affichage est OK donc je clique pour la suite du traitement.
3- je l'envoi par un $_POST[] (input hidden) vers une autre page et là le nom n'est plus reconnu et donc je ne peut plus poursuivre le script.

ps : Bien sur tout roule avec des noms de dossier sans caractères spéciaux. J'ai donc tout enlevé les é. Mais j'aimerais bien trouver la fonction qui résoudra mon problème.