Satimage Précédent
Unicode and AppleScript
Accueil Documentation Smile Texte, Unicode, Regular expressions Unicode and AppleScript  
Dans cette page
Une courte introduction et un lien vers une référence Retour
La page de présentation d'Unicode sur le site de l'Unicode Consortium commence par:
Le standard Unicode est l'encodage universel standard des caractères utilisés pour la représentation de texte sur un ordinateur.
Pour plus d'information à ce propos cliquez ici.

Du texte Unicode peut virtuellement contenir n'importe quel caractère existant. Si vous utilisez MacOSX, votre machine est compatible-Unicode : vous pouvez voir, entrer, enregistrer et utiliser du texte Unicode. Nous nous intéresserons ici brièvement aux questions relatives à l'utilisation d'Unicode dans des scripts.
Comment AppleScript enregistre du texte dans des fichiers Retour
Les fichiers peuvent être stockés dans un certain nombre de formats, parmi lesquels quatre nous intéresseront : ISO 8859-1 (le format "PC"), Mac-encoding, UTF-8 et UTF-16.
  • ISO 8859-1 peut être traduit du Mac-encoding et inversement dans Smile, par un menu ou par un script, par conséquent nous ne nous attarderons pas plus ici sur ce format.
  • Les fichiers encodés en Mac-encoded stockent un octet par caractère dans l'intervalle 0..255. Les 128 premières valeurs sont traitées comme de l'ASCII standard, par exemple ASCII character of 37 est le symbole pourcent %. Les 128 dernières valeurs sont traitées relativement à l'encodage macintosh, par exemple ASCII character of 150 vaut ñ. Nous nous référerons à cet encodage en tant qu'encodage Mac-encoding.
  • UTF-8 est une façon d'encoder de l'Unicode. Les fichiers UTF-8 stockent chaque caractère dans au moins un octet. Les 128 caractères ASCII de base sont encodés tels quels en UTF-8, sur un octet, ce qui fait qu'un fichier qui contient seulement des caractères ASCII 7-bits est en même temps un fichier UTF-8, un fichier Mac-encoded et un fichier ISO 8859-1.
  • UTF-16 est une autre manière de stocker de l'Unicode. Les fichiers UTF-16 stockent chaque caractère sur au moins deux octets. De plus, le fichier commence par deux octets valant 254 puis 255 (en hexa : FEFF). Ainsi un éditeur d'Unicode peut immédiatement distinguer un fichier UTF-16 d'un fichier UTF-8.
AppleScript peut lire et écrire dans les trois derniers formats. Pour lire un ficher encodé en Mac-encoded, il suffit d'utiliser la commande read. L'exemple ci-dessous écrit les deux caractères #% dans un fichier (temporaire) qui est relu ensuite.
-- si vous comptez exécuter les exemples qui suivent, compilez une fois pour toute dans un terminal AppleScript la fonction suivante :
on TempFile()
    "" & (path to "temp" from user domain) & (make new name)
end TempFile

set f to TempFile()
set n to open for access file f with write permission
write "#%" to n
close access n
set x to read (f as alias)
display dialog x -- will display: #%

set x to read (f as alias) as Unicode text
display dialog x -- will display: ⌥
  • Utilisze de préférence les commandes readtext et writetext de Smile au lieu des commandes read et write d'AppleScript. readtext et writetext ont un aramètre encoding permettant de spécifier l'encodage : "MACINTOSH", "UTF-8", "UTF-16", "ISO-8859-1" ou un autre nom IANA.
  • Si vous utilisez les commandes read et write, il est conseillé de toujours spécifier le paramètre as: as «class utf8» pour de l'UTF-8, as Unicode text pour de l'UTF-16 (attention le BOM n'est pas écrit).
Comment Smile ouvre des fichiers textes Retour
Du fait qu'il n'y ait pas d'indication permettant de savoir si un fichier est en ASCII ou en UTF-8, Smile fait son choix à partir du type du fichier, qui est une caractéristique propre à MacOS.
  • Lorsque le fichier est de type ut16, Smile s'ouvre par défaut en texte encodé en Mac-encoding, dans une fenêtre de texte.
  • Autrement, il ouvre le fichier en Unicode, dans une fenêtre Unicode. Smile sélectionne automatiquement le format UTF-8 ou UTF-16 selon le commencement du fichier.
  • Vous pouvez contourner le comportement par défaut en pressant les touches shift (⇧) ou option (⌥) lorsque vous déroulez le menu Fichier
unicode number s et unicode character n Retour

Smile possède deux commandes qui sont à l'Unicode ce que sont ASCII number et ASCII character aux caractères ASCII : unicode number et unicode character.

set the_Omega to unicode character 937
 -- "Ω"
unicode number of the_Omega
 -- {937}
ASCII number of the_Omega
 -- 189
unicode number of "¬"
 -- {172}
ASCII number of "¬"
 -- 194

Notez cependant les deux différences suivantes :
  • unicode number marche sur du texte de longueur quelconque. Il renvoie la liste des nombres Unicode des caractères du texte passé en paramètre.
    unicode number "hello"
     -- {104, 101, 108, 108, 111}
    De même, unicode character accepte une liste d'entiers.
    unicode character (reverse of {104, 101, 108, 108, 111})
     -- "olleh"
  • Vous pouvez préciser encoding «class utf8» pour que unicode number renvoie la liste des octets UTF-8 au lieu de la liste des nombres Unicode (UTF-16).
    unicode number "été"
     -- {233, 116, 233}

    unicode number "été" encoding «class utf8»
     -- {195, 169, 116, 195, 169}
    De même, unicode character encoding «class utf8» convertit une liste d'octets UTF-8 en un texte Unicode.
English version
Copyright ©2008 Paris, Satimage