Jump to content
Sign in to follow this  
captain_torche

Imprimante Zebra : Encodage particulier

Rate this topic

Recommended Posts

Je suis en train de travailler avec une imprimante our étiquettes Zebra, et je galère quelque peu avec l'encodage des caractères.


 


Dans l'éditeur de templates, quand j'écris un "é", il sera transformé en "\82" dans le fichier, et imprimé correctement en "é".


 


Par contre, je ne trouve pas la logique de correspondance "é => 82" pour pouvoir l'appliquer aux textes issus de ma base de données qui seront intégrés dans l'étiquette.


 


Si quelqu'un a une piste, ça me dépannerait beaucoup. Merci d'avance !


Share this post


Link to post
Share on other sites

Merci Dan !


Par contre, comment convertir mon texte de manière à obtenir cet encodage ?


Parce que depuis l'utf8, ord('é') donne 195, depuis ISO-8859-1(5) -> 233


 


Et si je fais un iconv('UTF-8', 'ASCII', "é"), j'obtiens une erreur.


Share this post


Link to post
Share on other sites

Je me réponds tout seul : a priori il faut convertir de cette manière :


$text = iconv('UTF-8', 'CP437', $text);

Share this post


Link to post
Share on other sites

Et en remplaçant ASCII par CP850 ?


Edit: je n'avais pas vu ton dernier message.....


Share this post


Link to post
Share on other sites

Ceci fonctionne aussi :



print dechex(ord(iconv('UTF-8','CP850',"é")));

et donne 82 à l'affichage (dans la mesure où tu entres ce "é" en UTF bien sur) wink.gif


Share this post


Link to post
Share on other sites

Et voilà ma fonction définitive : on ne remplace que les caractères ASCII étendus (>= 128) :
 

function zebraConvert($text)    {        $return = '';        $arr = str_split(iconv('UTF-8', 'CP437//TRANSLIT', $text));        foreach ($arr as $letter) {            $ord = ord($letter);            if ($ord >= 128) {                $return .= '\\' . dechex($ord);            } else {                $return .= $letter;            }        }        return $return;    }

Edit : on a fait la même chose, grosso modo, sauf que je l'ai volontairement étendu à des messages plus longs, et que je ne fais la conversion que pour les caractères ASCII étendus.

Share this post


Link to post
Share on other sites

Moi je n'ai pas écrit un programme, juste donné une piste ...


Tu sais bien que les admins système sont des feignants, non ? laugh.gif


 


Et je me suis assez fait ch... avec la conversion de la base du Hub en UTF-8 ...


Share this post


Link to post
Share on other sites

Le CP850 est le jeu Latin 1 pour l'Europe occidentale.


Le CP437 est le jeu originel d'IBM


 


Tu as les différents CP sur cette page, juste sous le titre principal.


http://www.ascii-codes.com/

Share this post


Link to post
Share on other sites

@michaelborchakov, il me semble que c'est très facile à tester, non ?


 


Sachant qu'en plus tu as la réponse à la question sur la ligne d'en-dessous...


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...