QR code can be generated in the following different modes: Numeric, Alphanumeric, Byte, Kanji, ECI, FNC1 plus some others. However, since Numeric mode can encode only numbers, Alphanumeric mode can encode only numbers, uppercase letters and only a few other characters, and Kanji mode is most appropriate for Kanji characters, we are using Byte mode exclusively.
While QR can encode UTF-8 (unicode) characters, some QR readers (decoders) might not support them and will not properly decode them.
By default, we are using he highest possible error correction level to produce the most reliable code, but you can use the lesser error correction level which will generate a smaller code and thus allow the encoding of a greater number of characters. High error correction level allows a recovery of up to 30% of the data but you can encode at most 1,273 bytes. Low error recovery level can encode up to 2,953 bytes, but only 7% of the data can be recovered. If you use non-ASCII unicode characters the number of encoded characters can be significantly less.