docs: def encode_kanji(self):
          """This method encodes the QR code's data if its mode is
          kanji. It returns the data encoded as a binary string.
          """
          def two_bytes(data):
              """Output two byte character code as a single integer."""
              def next_byte(b):
                  """Make sure that character code is an int. Python 2 and
                  3 compatibility.
                  """
                  if not isinstance(b, int):
                      return ord(b)
                  else:
                      return b
  
              #Go through the data by looping to every other character
              for i in range(0, len(data), 2):
                  yield (next_byte(data[i]) << 8) | next_byte(data[i+1])
  
          #Force the data into Kanji encoded bytes
          if isinstance(self.data, bytes):
              data = self.data.decode('shiftjis').encode('shiftjis')
          else:
              data = self.data.encode('shiftjis')
          
          #Now perform the algorithm that will make the kanji into 13 bit fields
          with io.StringIO() as buf:
              for asint in two_bytes(data):
                  #Shift the two byte value as indicated by the standard
                  if 0x8140 <= asint <= 0x9FFC:
                      difference = asint - 0x8140
                  elif 0xE040 <= asint <= 0xEBBF:
                      difference = asint - 0xC140
  
                  #Split the new value into most and least significant bytes
                  msb = (difference >> 8)
                  lsb = (difference & 0x00FF)
  
                  #Calculate the actual 13 bit binary value
                  buf.write('{0:013b}'.format((msb * 0xC0) + lsb))
              #Return the binary string
              return buf.getvalue()