Aller au contenu
captain_torche

Imprimante Zebra : Encodage particulier

Noter ce sujet :

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 !


Partager ce message


Lien à poster
Partager sur d’autres 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.


Partager ce message


Lien à poster
Partager sur d’autres sites

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


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

Partager ce message


Lien à poster
Partager sur d’autres sites

Et en remplaçant ASCII par CP850 ?


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


Partager ce message


Lien à poster
Partager sur d’autres 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


Partager ce message


Lien à poster
Partager sur d’autres 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.

Partager ce message


Lien à poster
Partager sur d’autres 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 ...


Partager ce message


Lien à poster
Partager sur d’autres 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/

Partager ce message


Lien à poster
Partager sur d’autres 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...


Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×