barcodegs1-128gs1-ai-syntaxgs1-datamatrixbwip-js

bwip.js: How to use the Group Separator character with GS1-128


There is a service hosted on for generating barcodes metafloor.com using bwip.js I want to generate a barcode for following data (GS character is represent by {GS}).

(01)10875066000333(10)1212{GS}(17)121212(30)8{GS}

According the documentation I'm able to generate a barcode for data without GS character

https://bwipjs-api.metafloor.com/?bcid=gs1-128&text=(01)10875066000333(10)1212(17)121212(30)8

But the scanner require GS characters.

The documentation is clear

  1. Special characters must be encoded in format ^NNN
  2. Parse option has to be true, by using parsefnc parameter
  3. The parameter has to be URL-encoded.

So for my string it's:

https://bwipjs-api.metafloor.com/?bcid=gs1-128&text=(01)10875066000333(10)1212%5E029(17)121212(30)8%5E029&parsefnc

But this gives me Error: bwipp.GS1badCSET82character: AI 10: Invalid CSET 82 character. I also tried

  1. Send GS char directly as %1D
  2. Send GS char as %5EGS
  3. Send GS char as ^029
  4. Send GS char directly
  5. Set parsefnc=true
  6. Combination of all above

But still getting the same error.

Is there something I'm doing wrong or is the problem on the other side?


Solution

  • For GS1 Application Identifier based data, trust the library to encode the data correctly by selecting the GS1-specific encoder for the symbology (gs1datamatrix in this case) and then provide the input in bracketed AI notation, i.e. without FNC1 / GS separators.

    The encoder will automatically add all of the necessary FNC1 non-data characters (which are transmitted as ASCII GS characters when read by a scanner) and it will also validate the contents of the AI data that you supply.

    Users that select a generic symbology and then attempt to perform the AI encoding themselves are prone to making several mistakes:

    Many of these mistakes will result in failure to decode and interpret the GS1 AI data (even if the barcode appears to read successfully) which may result in charge-backs and necessitate relabelling or disposal.

    The data that you are providing falls afoul of at least some of these pitfalls.

    See this article for a thorough description of the checks that BWIPP (and hence BWIP-JS) implements to prevent such data quality issues.