← Guides & articles
ED
Eduard Diaz
IT technician at S-IE, an official Zebra partner · Updated

Ñ and accented characters print incorrectly in ZPL: how to fix them

Numbers and unaccented letters print correctly, but España becomes España or Café becomes Café. This often points to a mismatch between the encoding sent and the encoding the printer interprets. Boxes or gaps also call for a font check.

Three things must agree

Send UTF-8 bytes, place ^CI28 before the text fields and use a font containing the required characters. ^CI28 selects how bytes are interpreted: it does not convert a Windows-1252 file or repair text that is already corrupted.

Two labels illustrate España and Café with incorrect encoding and with correctly printed accents.
AI-generated illustrative comparison. Check encoding and font coverage separately.

1. Identify the symptom

If you see España, look for an incorrect text conversion: these characters are a clue, not proof of where it happened. A box, question mark or gap can mean the font lacks a character or the character was lost before printing. If the label literally shows ^XA or ^FD, use the garbled-text guide linked below.

2. Send UTF-8 and declare ^CI28

Open the file as UTF-8 and check that it contains España, not España. In the sending application, encode the text as UTF-8 once and check that the driver or print service does not convert it afterwards. Put ^CI28 at the beginning of each format and check that no later ^CI changes the encoding before the affected field. Resolve HTML entities and JSON escapes before building the ZPL.

3. Print a minimal label

This example uses font 0 and an area of approximately 60 × 40 mm at 203 DPI. Print through the same channel that fails and compare the output with the expected text. The preview helps check content and layout, but it cannot establish which bytes reach the Zebra or which characters its font contains.

Example with UTF-8 text

^XA
^CI28
^PW480
^LL320
^LH0,0
^FO24,30^A0N,28,28^FDEspaña - Café^FS
^FO24,85^A0N,28,28^FDá é í ó ú ñ ü^FS
^XZ

Expected output

España - Café

á é í ó ú ñ ü

4. Isolate transmission with ^FH

The second test expresses UTF-8 bytes as hexadecimal and contains only ASCII characters. ^FH enables escapes for the next field; the default indicator is an underscore. Repeat ^FH for every field that needs it. If this version prints correctly and the first one does not, investigate file encoding and transmission. If both fail, also check the font, firmware support and commands added by the application.

The same first line using hexadecimal bytes

^XA
^CI28
^PW480
^LL320
^LH0,0
^FO24,30^A0N,28,28^FH^FDEspa_C3_B1a - Caf_C3_A9^FS
^XZ

Expected output

España - Café

In UTF-8, ñ is two bytes: C3 B1. _F1 is not a valid UTF-8 ñ. Copy the hexadecimal test to the printer's sending channel without converting the escapes again.

CharacterUTF-8 bytesInside ^FH / ^FD
ñC3 B1_C3_B1
éC3 A9_C3_A9
áC3 A1_C3_A1
üC3 BC_C3_BC

5. Check the font if characters are missing

Keep ^CI28 and try a font containing the required glyphs. A downloaded Unicode font can be selected with ^A@ or assigned through ^CW, following the device documentation. On older printers, confirm that the firmware supports ^CI28. Then test real names and addresses: fixing ñ and é does not guarantee that the same font covers every writing system.

Frequently asked questions

Where should I put ^CI28?

After ^XA and before fields containing UTF-8 text. Declare it in every format so you do not depend on the state left by another job.

Why does ^CI28 not fix España?

The text may already be corrupted or still be sent in another encoding. Fix the source and check the bytes delivered by the application.

Does ^FH replace ^CI28?

No. ^FH represents bytes using escapes; ^CI28 tells the printer how to interpret them. The example needs both.

Should I change speed or darkness?

Not to fix encoding. Consistent character substitutions call for checking text, encoding and font. Physical print defects need a different diagnosis.

Related guides

The Zebra prints garbled text or literal ZPL commands

Official Zebra documentation

ED

About the author

Eduard Diaz

Eduard Diaz is an IT technician (development) at S-IE, an official Zebra partner with more than 20 years providing identification and labelling services. He builds and maintains EditorZPL to make working with ZPL and Zebra label printers easier.

s-ie.cat

Related tools