OVH Cloud OVH Cloud

[HELP] encodage accents AppleScript

1 réponse
Avatar
julien.gautier
Bonjour,


j'ai un gros problème d'encodage de fichier texte avec AppleScript.


Si je tape dans BBedit ou DreamWeaver :


<?php

echo 'mémée';

?>

Puis que je sauve ce fichier sous le nom : test.php dans le dossier
racine du serveur web.
Et que je lance ce fichier depuis Safari, j'obtiens à l'écran : mémée.

Parfait.


Maitenant, je voudrais que ce fichier test.php soit écrit par
AppleScript.

Or, si j'écris un script comme ceci :

set txt to "<?php echo 'mémée';?>"
set f to "emac:Users:jgautier:test.php"
set n to open for access file f with write permission
write txt to n
close access n

J'obtiens un fichier qui dans le Finder (aperçu) et dans BBedit semble
identique au premier.
Mais si je lance ce fichier depuis Safari, j'obtiens à l'écran :

m?m?e

(et les '?' sont en fait des 'Z' avec un circonflexe retourné dessus)


Je m'arrache les cheveux avec cette histoire de code UTF-8, ISO, etc.

D'ailleurs, écrire :

write txt to n as «class utf8»

est encore pire...


Comment faire pour qu'AS écrive les accents comme je le souhaite (de
telle manière que le fichier s'affiche correctement dans le navigateur ?


Merci d'avance pour votre aide.

1 réponse

Avatar
Schmurtz
Julien Gautier wrote:

j'ai un gros problème d'encodage de fichier texte avec AppleScript.

Si je tape dans BBedit ou DreamWeaver :

<?php

echo 'mémée';

?>

Puis que je sauve ce fichier sous le nom : test.php dans le dossier
racine du serveur web.
Et que je lance ce fichier depuis Safari, j'obtiens à l'écran : mémée.

Parfait.


C'est un bon départ. Cela signifie que le fichier est encodé en Latin-1
(format d'encodage des caractères de windows, qui c'est imposé comme un
standard sur le web).

Si tu ouvres le fichier avec TextEdit, tu verras des caractères bizarres
à la place des 'é'.

Maitenant, je voudrais que ce fichier test.php soit écrit par
AppleScript.

Or, si j'écris un script comme ceci :

set txt to "<?php echo 'mémée';?>"
set f to "emac:Users:jgautier:test.php"
set n to open for access file f with write permission
write txt to n
close access n

J'obtiens un fichier qui dans le Finder (aperçu) et dans BBedit semble
identique au premier.
Mais si je lance ce fichier depuis Safari, j'obtiens à l'écran :

m?m?e

(et les '?' sont en fait des 'Z' avec un circonflexe retourné dessus)


C'est parce que le fichier a été enregistré avec l'encodage MacRoman,
l'encodage par défaut de MacOS, alors que Safari, n'ayant aucune
informations sur l'encodage utilisé, a choisit par défaut d'utiliser
l'encodage Latin-1.

Si tu changes l'encodage dans le menu "Présentation -> Encodage du texte
-> Occidental (Mac OS Roman)" tu devrais voir des 'é'.

BBedit dispose d'une fonction de sélection automatique de l'encodage. ce
qui explique qu'il affiche de la même manière deux fichiers qui en fait
sont différent.

Je m'arrache les cheveux avec cette histoire de code UTF-8, ISO, etc.

D'ailleurs, écrire :

write txt to n as «class utf8»

est encore pire...


C'est pas pire, c'est pareil (donc aussi mauvais). La, il faut choisir
UTF-8 dans Safari pour voir le fichier proprement.

Comment faire pour qu'AS écrive les accents comme je le souhaite (de
telle manière que le fichier s'affiche correctement dans le navigateur ?


Avec TextEdit, tu peux choisir le format d'encodage d'un fichier que tu
ouvres à l'aide du menu "OuvrirŠ" (pas en glissant-déposant) et tu peux
choisir le format dans lequel tu enregistres (avec "Enregistrer sousŠ").
C'est utile pour faire des vérifications ou convertir un encodage en un
autre, mais ça reste pas pratique à utiliser.

Avec les commandes intégré d'AppleScript on peut enregistrer des
fichiers aux formats MacRoman (par défaut), UTF-8 (as «class utf8») et
UTF-16 (as Unicode text). Donc pas d'ISO 8859-1 (le Latin-1).

Ça commence mal, mais il y a tout de même une parade pour que
l'affichage soit bon dans un navigateur web. Il est en effet possible
dans une page HTML de spécifier l'encodage utilisé :
<html>
<header>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...

Ou pour les navigateurs compatible xhtml, rajouter la ligne suivante au
début du fichier :
<?xml version="1.0" encoding="UTF-8"?>

Merci d'avance pour votre aide.


De rien

--
Schmurtz