docs: def encode_zarr_variable(var, needs_copy=True, name=None):
      """
      Converts an Variable into an Variable which follows some
      of the CF conventions:
  
          - Nans are masked using _FillValue (or the deprecated missing_value)
          - Rescaling via: scale_factor and add_offset
          - datetimes are converted to the CF 'units since time' format
          - dtype encodings are enforced.
  
      Parameters
      ----------
      var : xarray.Variable
          A variable holding un-encoded data.
  
      Returns
      -------
      out : xarray.Variable
          A variable which has been encoded as described above.
      """
  
      var = conventions.encode_cf_variable(var, name=name)
  
      # zarr allows unicode, but not variable-length strings, so it's both
      # simpler and more compact to always encode as UTF-8 explicitly.
      # TODO: allow toggling this explicitly via dtype in encoding.
      coder = coding.strings.EncodedStringCoder(allows_unicode=False)
      var = coder.encode(var, name=name)
      var = coding.strings.ensure_fixed_length_bytes(var)
  
      return var