Pages: 1
- Sujet précédent - [MAPSERVER] Problème d'encodage des informations dans le TEMPLATE - Sujet suivant
#1 Thu 03 November 2016 11:34
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
[MAPSERVER] Problème d'encodage des informations dans le TEMPLATE
Bonjour
nous disposons d'un shapefile contenant des lignes stockées sous linux affichées avec OpenLayers ;
nous souhaitons afficher le nom de la ligne en cliquant sur cette ligne.
pour cela nous effectuons une requête GetFeatureInfo permettant de récupérer ce nom
nous avons donc défini un template "Ligne.html" permettant d'afficher ce nom correspondant à la valeur du champ LIBELLE, par exemple :
<b>Ligne :</b>[LIBELLE]<br>
le problème est que l'information récupérée nous retourne :
Ligne :NOM LIGNE N�2
au lieu de :
Ligne :NOM LIGNE N°2
il y a donc un problème d'encodage
autres remarques :
-l'affichage des noms de lignes dans le mapfile sur la carte est correct
ces noms n'apparaissent qu'à une petite échelle spécifiée dans le mapfile ; l'intérêt du clic est d'avoir ce nom lorsque l'échelle est plus grande
-en rentrant directement la requête GetFeatureInfo dans le champ url du navigateur le problème persiste (donc Openlayers n'est pas en cause)
-en chargeant le shapefile dans QGIS, plusieurs formats (dont ISO-8859-1) permettent d'afficher correctement le libellé (mais pas utf-8)
nous avons essayé de forcer l'encodage dans le template (sans succès) de la manière suivante :
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
</head>
<body>
<b>Ligne :</b>[LIBELLE]<br>
</body>
</html>
concernant le mapfile, que l'on précise ou non les informations suivantes ne changent rien aux résultats :
- "wms_encoding" "ISO-8859-1"
- encoding "ISO-8859-1" au niveau du layer Ligne
dans tous les cas l'affichage de l'information cliquée n'est pas correcte, par contre le label affiché sur la carte est correct
voici la description du layer où les lignes sont affichées systématiquement, par contre les labels n'apparaissent qu'à une petite échelle :
layer
name "Ligne"
type line
TEMPLATE "Ligne.html"
status on
data "/path/data/lignes.shp"
#maxscaledenom 10000010
labelmaxscaledenom 50010
labelitem LIBELLE
projection
"init=epsg:27572"
end
class
name "LIGNE"
style
width 2
outlinecolor "#FF0000"
end
label
font "ArialRegular"
type truetype
size 8
position uc
buffer 2
force true
priority 5
color "#FF0000"
end
end
end
autre information, la version de mapserver que nous utilisons est 6.0.4
merci d'avance pour votre aide
Jean-Marie
Hors ligne
#2 Tue 08 November 2016 15:48
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [MAPSERVER] Problème d'encodage des informations dans le TEMPLATE
Il fallait convertir les données textes contenues dans le fichier .dbf dans le format utf-8
après quelques recherches sur internet notamment
http://www.geoinformations.developpemen … a2941.html
voici une procédure :
1- convertir le shapefile en un fichier au format texte (GML, CSV, etc.), exemple :
Code:
$ogr2ogr -f "CSV" dest.csv source.shp
2- vérifier le format du fichier résultat, dans mon cas iso-8859-1 :
Code:
$file -i dest.csv dest.csv: text/plain; charset=iso-8859-1
3- convertir le fichier "dest.csv" au format utf-8 :
Code:
$iconv -f ISO-8859-1 -t UTF-8 dest.csv -o dest_utf8.csv
4- générer le fichier .dbf dans le format utf-8 :
Code:
$export SHAPE_ENCODING="UTF-8" $ogr2ogr -f "ESRI Shapefile" res.shp dest_utf8.csv -lco ENCODING=UTF-8
remarques :
-res.cpg contient la référence au format utf-8 (ce fichier est généré avec l'option '-lco ENCODING=UTF-8')
-res.dbf contient les libellés dans le format utf-8 grâce à l’initialisation de la variable d'environnement SHAPE_ENCODING
j'ai la version GDAL 1.9.2 ; à partir de la 1.11.3 on peut visiblement changer l'encodage du shapefile sans passer par un fichier intermédiaire
Hors ligne
Pages: 1
- Sujet précédent - [MAPSERVER] Problème d'encodage des informations dans le TEMPLATE - Sujet suivant