Sample code for 30+ languages & platforms
Java Requires Chilkat v11.7.0+

QR Code Numeric, Alphanumeric and Byte Modes

See more QR Code Examples

Demonstrates the QR encoding modes. Digits alone are stored in numeric mode, and text made only of digits, upper-case letters, space and $ % * + - . / : in alphanumeric mode. Both pack more characters into a symbol than byte mode, which is used for everything else. QrCode chooses the most compact mode the text allows, and the response reports it. A product code written in upper case therefore gives a smaller symbol than the same code in lower case.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Formats;
import com.chilkatsoft.chilkat2.JsonObject;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Formats fmt = new Formats();
        JsonObject json = new JsonObject();
        JsonObject jsonOut = new JsonObject();

        // Digits only.
        json.updateString("payload.text", "00123456789012345678");
        try {
            fmt.qrCode("generate", json, jsonOut);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("digits: mode " + jsonOut.stringOf("symbols[0].selectedEncoding.mode") + ", version " + jsonOut.intOf("symbols[0].selectedEncoding.version"));

        // Upper-case letters, digits, space and - are all in the alphanumeric set.
        json.updateString("payload.text", "ORDER-12345 LOT A7 SHELF 12-C");
        try {
            fmt.qrCode("generate", json, jsonOut);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("upper case: mode " + jsonOut.stringOf("symbols[0].selectedEncoding.mode") + ", version " + jsonOut.intOf("symbols[0].selectedEncoding.version"));

        // Lower-case letters are not, so the same text in lower case needs byte mode.
        json.updateString("payload.text", "order-12345 lot a7 shelf 12-c");
        try {
            fmt.qrCode("generate", json, jsonOut);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("lower case: mode " + jsonOut.stringOf("symbols[0].selectedEncoding.mode") + ", version " + jsonOut.intOf("symbols[0].selectedEncoding.version"));

        // The mode can be named.  Byte mode can hold any text.  Naming a mode the text cannot use
        // (numeric for text with letters, for example) fails with conflictingOptions.
        json.updateString("payload.text", "00123456789012345678");
        json.updateString("encoding.qr.mode", "byte");
        try {
            fmt.qrCode("generate", json, jsonOut);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("digits as bytes: mode " + jsonOut.stringOf("symbols[0].selectedEncoding.mode") + ", version " + jsonOut.intOf("symbols[0].selectedEncoding.version"));

        // The four symbols, in the order they were made:

        // image

        // Sample output:

        // digits: mode numeric, version 1
        // upper case: mode alphanumeric, version 2
        // lower case: mode byte, version 3
        // digits as bytes: mode byte, version 2
    }
}