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.
|