The field data of a ^BC (Code 128) barcode contains a character outside ASCII 0 to 127, such as à or é. Zebra's Code 128 character table (subsets A, B and C) covers ASCII only, so the character is not part of the symbology: depending on firmware the printer drops it, replaces it or encodes the raw UTF-8 bytes, and the scanned value no longer matches the text. ^CI28 only changes how text is read, not what Code 128 can encode, and an ^FH escape such as _C3 produces the same byte. The preview draws a space in its place.
^XA^CI28^FO50,50^BY2^BCN,100,Y,N,N^FDJOÃO^FS^XZFinding: ZPL4007 · line 1:35 — ^BC field data contains a non-ASCII character (Ã): Code 128 encodes only ASCII 0-127, so printers drop, replace or garble it and the scan differs from the text (the preview draws a space). ^CI28 and ^FH escapes do not help. Transliterate to ASCII (e.g. Ã → A) or use QR Code / Data Matrix for accented text
Open the broken label in the editor →
Transliterate the data to ASCII before it reaches the label (JOÃO becomes JOAO). When the accented text itself must be scanned, use a 2D symbology such as QR Code (^BQ) or Data Matrix (^BX) with ^CI28. The corrected example uses the ASCII spelling.
^XA^CI28^FO50,50^BY2^BCN,100,Y,N,N^FDJOAO^FS^XZOpen the corrected label in the editor
ZPL4001 Barcode without data · ZPL4002 EAN-13 data is not 12–13 digits · ZPL4003 GS1 data without GS1 mode (no FNC1) · ZPL4004 GS1 check digit is wrong · ZPL4005 GS1 AI value has the wrong length · ZPL4006 GS1 check digit set by the printer
npx labelixa validate "labels/**/*.zpl" lints your files and prints this page's address next to each finding. /docs/cli