ECI (Extended Channel Interpretation) Unicode Encoding for 2D QR Code Barcodes

Barcode Information | Tutorials | Examples

Barcode ECI (Extended Channel Interpretation) is a method of encoding data in a 2D barcode symbol to support international Unicode character sets other than the default of ISO-8859-1 Latin1. ECI barcodes contain information about the data encoded in much the same way that HTML web pages contain “charset” metadata. Not all barcode scanners support ECI, therefore ECI should only be used when necessary. To date, the only app that supports reading ECIs is the iOS Code Scanner app.

IDAutomation recommends using UTF-8 encoding instead of ECI for the following reasons:

  • Unicode characters are automatically encoded in UTF-8 with several IDAutomation products.
  • ECI requires ECI Mode Indicators as an identifier to inform the encoder and decoder how to treat the data, UTF-8 is automatic.
  • UTF-8 is decoded by many more scanners and apps than ECI.
  • Many script and VBA code products such as the Barcode Generator for Crystal Reports cannot encode ECI because the programming language API lacks the required functions.
  • When scanning an ECI symbol from a scanner that does not support ECI, the scanner will return garbage characters or crash the app or program.

ECI is currently available in QR Code with the following products:

Below is a list of supported ECIs. ECIs are encoded in IDAutomation software with ~Ennn where nnn are the last 3 characters of the ECI code. For example, ECI \000003 is encoded in IDAutomation software as ~E003. The default encoding is ECI 003 which is the ISO-8859-1 Latin 1 character set. If no ECI is specified it is assumed to be the default. Multiple ECIs may be combined, for example, the following encodes data in Cyrillic, Greek, and Thai.

~E001 ISO-8859-1 Latin No. 1
~E002 Code page 437
~E003 ISO-8859-1 Latin No. 1 (default encoding )
~E004 ISO-8859-2 Latin No. 2
~E005 ISO-8859-3 Latin No. 3
~E006 ISO-8859-4 Latin No. 4
~E007 ISO-8859-5 Latin Cyrillic
~E008 ISO-8859-6 Latin Arabic
~E009 ISO-8859-7 Latin Greek
~E010 ISO-8859-8 Latin Hebrew
~E011 ISO-8859-9 Latin No. 5
~E013 ISO-8859-11 Latin Thai
~E015 ISO-8859-13 Latin No. 7
~E016 ISO-8859-14 Latin No. 8 Celtic
~E017 ISO-8859-15 Latin No. 9
~E018 ISO-8859-16 Latin No. 10
~E020 Shift-JIS
~E021 Windows-1250 Latin 2 Central Europe
~E022 Windows-1251 Cyrillic
~E023 Windows-1252 Latin 1
~E024 Windows-1256 Arabic
~E025 UCS-2 Unicode
~E026 Unicode UTF-8
~E028 Big-5
~E029 GB PRC Chinese
~E030 Korean

ECI vs UTF-8 Comparison Example

Fig. 1. This QR Code symbol encodes data in ECI mode:

This QR Code symbol encodes Unicode data in ECI mode

Fig. 2. This QR Code symbol encodes data in UTF-8 mode:

This QR Code symbol encodes Unicode data in UTF-8 mode

The following is the result when reading the symbol in Fig 1 or Fig 2 above with the iOS Code Scanner app:

The scanned ECI data from QR Code

The data used to encode the information in the above symbol with ECI is:

The data used to encode the information in the above symbol with UTF-8 is: