docs: def evaluate_unicode(self, value):
          """Evaluate Unicode."""
  
          if value.startswith('u8'):
              length = 1
              value = value[3:-1]
              encoding = 'utf-8'
          elif value.startswith('u'):
              length = 2
              value = value[2:-1]
              encoding = 'utf-16'
          else:
              length = 4
              value = value[2:-1]
              encoding = 'utf-32'
  
          def replace_unicode(m):
              """Replace Unicode."""
  
              groups = m.groupdict()
              esc = m.group(0)
              value = esc
              if groups.get('special'):
                  # Handle basic string escapes.
                  value = BACK_SLASH_TRANSLATION[esc]
              elif groups.get('char') or groups.get('oct'):
                  # Handle character escapes.
                  integer = int(esc[2:], 16) if groups.get('char') else int(esc[1:], 8)
                  if (
                      (length < 2 and integer <= 0xFF) or
                      (length < 4 and integer <= 0xFFFF) or
                      (length >= 4 and integer <= 0x10FFFF)
                  ):
                      try:
                          value = chr(integer)
                      except Exception:
                          value = ' '
              return value
  
          return self.norm_nl(RE_UESC.sub(replace_unicode, value).replace('\x00', '\n')), encoding