Problème de caractères spéciaux... [Résolu]

Signaler
Messages postés
187
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
12 octobre 2020
-
Messages postés
187
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
12 octobre 2020
-
Salut à tous,

Le script du site "abandonware.org" souffre d'un problème pour le chargement de fichiers image à partir d'un script PHP.

En effet, les caractères français dans le URL sont faux.

Nous avons un fichier texte en UTF8, et le script récupère un nom de fichier corrompu.
Le serveur n'aime pas trop ça et donne une erreur 404.

Nous sommes sur le PHP 7.4 et le script problématique est ici:
http://download.abandonware.org/magazines/Generation%20PC/test/

En utilisent les caractère "plain-text"(Windows
1252), le chargement se fait bien:
https://abandonware-magazines.org/test/

Donc, il y a un problème, soit au niveau serveur, soit au niveau script…
Ou peut-être bien les deux.

Ma question, pourquoi le script et le serveur ne se comprennent pas?

Cela peut venir de la liste des images en UTF8... et lu en Windows
1252. (liste des images, une ligne URL par image)

De la lecture de la liste dans script: htmlentities(), rawurlencode() ou utf8_decode(), sachant que rawurlencode prend les caractères de l'UTF8 sans l'interpréter.

Peut-on adapter le script pour donner un format identique et surtout compatible?

Malheureusement, je n'ai pas accès directement aux tests, mais toutes suggestions nous ravirait.

Merci pour votre aide future.

Nota: Le problème est apparu après un changement de serveur il y a un an.

5 réponses

Messages postés
187
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
12 octobre 2020
5
Salut,
Le serveur est en Windows 1252, le fichier texte en UTF8.
Y a t'il une astuce pour faire la conversion de l'URL… ?
Messages postés
187
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
12 octobre 2020
5
Nous nous orientons sur une configuration serveur:
export LANG=fr_FR.UTF-8
export LANGUAGE=
export LC_CTYPE="fr_FR.UTF-8"
export LC_NUMERIC="fr_FR.UTF-8"
export LC_TIME="fr_FR.UTF-8"
export LC_COLLATE="fr_FR.UTF-8"
export LC_MONETARY="fr_FR.UTF-8"
export LC_MESSAGES="fr_FR.UTF-8"
export LC_PAPER="fr_FR.UTF-8"
export LC_NAME="fr_FR.UTF-8"
export LC_ADDRESS="fr_FR.UTF-8"
export LC_TELEPHONE="fr_FR.UTF-8"
export LC_MEASUREMENT="fr_FR.UTF-8"
export LC_IDENTIFICATION="fr_FR.UTF-8"
export LC_ALL=

Pour rendre compatible les noms d'URLs…
Chose qui n'a pas été faite lors de la migration.

Mais ces changement semblent avoir effet sur les fichiers récents, et non sur les anciens.
Messages postés
1768
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
5 octobre 2020
104
bonjour

je suis pâs un pro sur le sujet mais normalement c'est bien le serveur qui doit être configuré pour fonctionner en utf 8 et si je ne dit pas d'erreur il faudra peut convertir
certain fichier en utf .
Messages postés
187
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
12 octobre 2020
5
Salut Karamel,
Oui, effectivement, c'est ce qui a été fait pour les fichiers texte… mais côté serveur, il semble être configuré par défaut en Windows 1252.
Alors ça marche pô.
Mais, l'inconnu porte sur la rétroactivité (pô nucélaire) de la renomation (changement de nom!), des fichiers déjà uploadés.
Il est toujours possible, comme je fais à petite échelle sur mes sites, de renommer les noms avec accents, mais là ça commence à faire du travail.
Je me demande aussi si le logiciel FTP de transfère n'envoie pas des noms avec un codage fallacieux en Windows 1252 et pas en UTF8.
On fait les tests avec la nouvelle config serveur...
Messages postés
187
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
12 octobre 2020
5
Voilà, c'est résolu.

Pour régler ce problème (Fred_L WebMaster):

Sur le serveur, j'ai lancé la commande
convmv -r -f iso-8859-1 -t UTF-8 --notest
et cela a résolu le problème.

L'origine du problème était donc bien que les noms de certains fichiers étaient en ISO-8859-1 au lieu de UTF-8.

Merci à tous.