gotoAndPlay();: Flash MX et autres bidulles de geek...

Utilisation de caractères accentués dans Flash MX

Une discussion sur un forum, m’amène à écrire ici un petit tutorial sur l’encodage de données pour Flash MX.

C’est un problème qui revient souvent et la solution est peu documentée. Vous avez un problème à charger des fichiers XML contenant des caractères spéciaux tels que nos accents accentués français ? Ne cherchez plus, voici la recette! :)

Avec Flash MX, plusieurs trucs ont changés et plusieurs personnes se sont retrouvées avec des fichiers Flash 5 qui ne s'affichaient plus correctement après conversion à MX. Cela est du à l'introduction du support Unicode dans Flash MX. Les applications plus anciennes comme Flash 5 utilisent ce qu'on appelle le "code page" du système d'opération. Unicode est un "set" de caractères international comprenant tous les caractères de tous les langages. Cela devient de plus en plus standard dans les applications modernes.

Pour régler le problème d'affichage de caractères spéciaux, plusieurs personnes recommandent, à tort, d’utiliser la ligne de code suivante dans le fichier Flash :
system.useCodepage = true;

Il ne faut pas utiliser useCodepage!! À prime abord, cette ligne semble régler comme par magie tous les problèmes, mais c'est faux! Cela force le player Flash à utiliser l'encodage du système sur lequel il roule plutôt que l'Unicode, comme le faisait Flash 5. Le danger est que les visiteurs n'ont pas toujours le même encodage que vous. Les caractères sont affichés avec l'encodage du système du visiteur et non selon un standard qui fonctionnera sur tous les systèmes. Même si la majorité des systèmes utilisent CP1252 (WinLatin1), il reste tout de même un danger que vos données soient mal affichées pour quelqu'un à l'étranger ou avec une mauvaise configuration. useCodepage est une solution qui peut sembler facile, mais qui ne règle pas le problème pour tout le monde et qui n'est pas viable à long terme puisque l'Unicode prend de plus en plus de place et que useCodepage risque de disparaître dans les prochaines versions de Flash. Il est donc recommandé de pas y toucher et de le laisser à sa valeur par défaut: false.

Si vous êtes vraiment mal prit, par exemple si vous voulez afficher un fichier externe sur lequel vous n'avez pas le contrôle, sachez que useCodepage peut-être mit à true temporairement pour le traitement d'un fichier et remit à false par après.

Alors que faire ? La solution est assez simple, il faut que les données reçues par Flash soient encodées en Unicode (UTF-8 ou UTF-16).

Dans votre fichier XML, utiliser l'entête suivante:
<?xml version="1.0" encoding="UTF-8"?>

Il faut aussi s'assurer que le fichier est sauvegardé avec l'encodage Unicode. Pour cela, je recommande d'utiliser un éditeur tel que UltraEdit qui a une fonction de conversion "ASCII to Unicode". Ou sur Mac, BBEdit a l'option d'encoding dans les "saving options".

Pour de l'ASP, si on veut encoder en Unicode, mettre ceci en header du fichier asp:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<% Session.CodePage = 65001%>

En PHP, utiliser ceci: utf8_encode(maString)

Voilà! Des questions ?

Quelques liens:

Encodage Unicode avec PHP

Charte de caractères de CP1252 vers Unicode

Liste complète des encodages de Windows

Posté par stef |mai 21, 2003 03:05 PM
Commentaires

Aussi je viens de me souvenir que NotePad sur Windows 2000 et XP a l'option de sauvegarder en UTF-8. Quand on fait "Save as...", l'option "Encoding" est au bas de la fenêtre.

Posté par: | mai 21, 2003 04:26 PM

Et sur Mac (OSX), on peut aussi choisir l'encoding avec SimpleText...

Je travaille sur Mac dans un environnement de programmeurs ASP (évidemment sous Windows). Puisque ceux-ci utilisent toujours le ISO-8859-1, le problème des caractères venaient toujours nous hanter lorsque j'utilisait un de leur fichier XML ou que j'en créait un pour eux à partir de Flash. Nous avons trouver la même solution il y a quelques temps et tout est rentré dans l'ordre.

Evidemment lorsque le XML sert qu'à Flash, j'utilise le UTF-8. Je me demande encore pourquoi on utilise autre chose que ca aujourd'hui? J'ai cru comprendre que SQL Server utilisait ISO-8859-1, ce qui justifie leur choix d'encoding. Dans notre cas, on reset l'encoding à la fin de la session pour ne pas que ca reste toujours à UTF-8 pour le reste des utilisations du XML.

Dommage qu la documentation sur le web à ce sujet est assez rare. Comme si les francophones n'utilisaient pas le XML! Et les anglophones suggèrent simplement le system.useCodepage = true;

Merci Stef, c'est très clair comme explications!

Posté par: | mai 22, 2003 08:30 AM

Merci beaucoup pour ce tutorial..C'est très intéressent surtout la partie sur le system.useCodepage

Posté par: | mai 22, 2003 09:25 AM

De rien, content que ça ait aidé quelqu'un.

Lolotte, SQL Server 2000 a le support Unicode maintenant.

Moi c'est le contraire, je travaille sur PC entourés de designers Mac. Mais j'ai un mac aussi...

Posté par: | mai 22, 2003 10:18 AM

Enfin une explication claire !!
Moi content

Posté par: | août 18, 2003 09:06 AM

Hello,

Intéressant mais j'ai toujours un problème de caractères accentués qui passent pas... Comprend pas??? Mes textes dans flash sont htmltext et il me saute tous les caractères accentués (ê, ô, ...)

Helpppppp.......

Posté par: | octobre 20, 2003 09:04 AM

Hello,

Intéressant mais j'ai toujours un problème de caractères accentués qui passent pas... Comprend pas??? Mes textes dans flash sont htmltext et il me saute tous les caractères accentués (ê, ô, ...)

Helpppppp.......

Posté par: | octobre 20, 2003 09:04 AM

Mmmm... il faut voir ta source (un txt ou un xml ?). Est-elle encodée correctement ?
Tu es avec Flash MX ou Flash 5 ?

Posté par: | octobre 20, 2003 12:55 PM

je viens de passer 2 heures a chercher des infos sur l'encoding XML supporté par flash et je suis tombé sur ton site. C'est tres pratique et instructif. Merci beaucoup. J'ai aussi plein de question et remplis deux post-it de trucs a pas faire avec flash MX.

NOTE: le site est en construction

Posté par: | octobre 22, 2003 11:46 AM

b'en moi j'ai un probème sous OSX... (10.2.8)

Quand je crée mes fichiers XML et que je choisis comme encodage l'UTF-8 (simplextex et dreamweaver MX), ils sont toujours corrompus une fois uploadé sur le serveur...
Le seul utilitaire qui fonctionne bien c'est notepad sous windows !

Posté par: | octobre 27, 2003 04:58 AM

Merci beaucoup pour ce tutorial. en effetla documentation est rare sur le web et il m'a fallu écumer plus d'un site pour trouver ce sympathique tutorial. Merci encore Stef... :)

Posté par: | février 18, 2004 08:52 PM

Oui une question:

si je met un caractere accentué dans un attribut de xml, genre , j'ai une erreur xml malformed, comment résoudre ce pb car si je remplace par %E8 ou 0x0060, j'ai tjs le pb ?

Posté par: | mars 1, 2004 07:55 AM

Merci, je travaille a l'etranger (Cambridge) sur des jeux educatif (sciences et langage). Ton tutorial me depane apres plusieurs heures (jours de recherche). Je pense que tu es le seul sur le web a avoir une solution simple clair (et qui marche) au problem des accent/xml/flash (et php)
Merci encore

Posté par: | mars 4, 2004 12:39 PM

Il y a un autre éditeur qui permet de sauvegarder en UTF-8 pour voir apparaître comme par magie les caractères accentués sous Flaxh MX 2004.Cet éditeur est TEXTPAD téléchargeable sur http://www.zdnet.fr/telecharger/windows/fiche/0,39021313,11000109s,00.htm.

Mercie pour la piste.

Posté par: | mars 18, 2004 06:37 AM

Merci pour ces infos précieuses.
Mes données (Mysql), récuperées via php sont correctement encodées sous Flasx MX.
Grace à utf8_encode(ma_chaine).

Encore merci...

Posté par: | mars 19, 2004 08:02 AM

Merci pour le tutorial, sympa!
Je charge sans problemes mes caractères accentués, par contre, c'est au moment d'écrire le XML (par l'intérmédiaire d'un script PHP) que ca plante. Any help?
Merci d'avance.
Vince

Posté par: | avril 27, 2004 05:01 AM

tout a fait d'accord avec Alex ! Cimer GA !!!!!

Posté par: | mai 13, 2004 05:43 PM

Je cherche à encoder en UTF-8 afin de pouvoir importer du txt sous flash.

Le format unicode (sous word) permet bien de conserver les caratères speciaux. mais le problème c'est qu'il ne conserve pas la mise en forme (texte en gras...). Il faut donc rajouter des balises dans le txt en unicode pour refaire sa mise en page... C'est galère, y a t'il des logiciels qui permettent d'encoder en conservant la mise en page ?

Dans le fichier texte externe encodé en unicode que j'appel dans flash, j'aimerais faire des liens afin que les gens en cliquant sur les mots puissent avoir des petites définitions qui s'ouvrent dans des pop-up. Est-ce que quelqu'un aurait une suggestion?

Posté par: | mai 14, 2004 09:36 AM

C'est moi qui ai écris le message au dessus,j'ai oublié de donner une précision : je travail sous mac.
J'ai dc bien vu : TEXTPAD téléchargeable sur http://www.zdnet.fr/telecharger/windows/fiche/0,39021313,11000109s,00.htm, mais il n'est que pr PC

;)

Posté par: | mai 14, 2004 09:41 AM

ki porré me dire ou télécherger flash sur MAC OS X ?
j'ai voulu le faire sur macromedia mais mon ordi ne sais pas quis en faire du fichier que j'ai télécherger !
une fois javais télécherger flash 5 mais je c plus ou !
kelkun pe me donner ladresse ?
merci !

Posté par: | novembre 9, 2004 11:43 AM

bravo pour ce tutorial précis et clair
continue comme sa :)

Posté par: | mai 17, 2005 09:31 AM

merci pour ce tutorial, ca fais 2 heures que je cherche pourquoi ca marche plus les accents ds ma galerie photo et je me rends compte que dreamweaver ne sauve pas en utf-8...j'ai donc utilisé notepad++ (pc) et tout est super.


Posté par: | mai 17, 2005 02:33 PM

Bonjour!
Encore un grand merci de plus pour cette explication qui m'aura éviter de m'arracher completement les cheveux!
Si certains ont encore des problèmes malgré l'encodage en UTF-8, c'est peut-être parce que leur fichier importé de Flash 5 vers MX contient des options de publication compatible flash 5. C'est en passant cette option en Flash 7 qu'il a enfin voulu m'encoder les contours des caractères accentués...

Voilà, si ca peut en aider certains! =)

Posté par: | juin 7, 2005 09:40 AM

Une précision pour ceux qui ont des problèmes avec FlashMx pour les caractères accentuées dans la fichier xml enregistré en utf8 (balise: ). Sous FlashMx, lorsque vous utilisez une typo spéciale pour le champ texte dynamique, il faut cliquer sur 'caractères' puis 'indiquer les plages', selectionner majuscule, minuscule, chiffres, ponctuation puis rajouter dans 'inclure ces caractères' les caractères accentués. Ca marche sur PC, sur Mac, jsais pas.

Posté par: | juillet 8, 2005 12:17 PM

Tu vien de me sauver la vie ... merci pour le tuto

Posté par: | juillet 21, 2005 04:29 PM

Site très pratique, rarement vu sur le web,les tutos sont exepsionnels, mais celui ci, malheuresement ne résoud pas mon problème d'accents avec flashmx2004pro un codage à l'enregistrement utf-8 via le bloc notes2.

Voici mon xml :




1
06/09/2005
08/09/2005
titi grand seigneur de l'été- 30€
page.htm


2
03/04/2002
03/05/2002
titi grand seigneur de l'été- 30€
page.htm


3
02/09/2005
03/09/2005
Bioconflict the Best, douvrez notre interview sur MétalRazor !
http://www.bioconflict.com

Qq aurait une solution ?

Merci à vous.....

Posté par: | septembre 2, 2005 01:18 PM
Poster un commentaire

Vous souhaitez suivre les commentaires sur ce site ? Un fil RSS est disponible ici.
bottom