/**
   * Because Text frames have a text encoding we need to check the text String does not contain
   * characters that cannot be encoded in current encoding before we write data. If there are change
   * the text encoding.
   */
  public void write(ByteArrayOutputStream tagBuffer) {
    // Ensure valid for type
    setTextEncoding(ID3TextEncodingConversion.getTextEncoding(getHeader(), getTextEncoding()));

    // Ensure valid for data
    if (!((TextEncodedStringSizeTerminated) getObject(DataTypes.OBJ_TEXT)).canBeEncoded()) {
      this.setTextEncoding(ID3TextEncodingConversion.getUnicodeTextEncoding(getHeader()));
    }
    super.write(tagBuffer);
  }
 /**
  * Because have a text encoding we need to check the data values do not contain characters that
  * cannot be encoded in current encoding before we write data. If they do change the encoding.
  */
 public void write(ByteArrayOutputStream tagBuffer) {
   if (!((PairedTextEncodedStringNullTerminated) getObject(DataTypes.OBJ_TEXT)).canBeEncoded()) {
     this.setTextEncoding(TextEncoding.UTF_16);
   }
   super.write(tagBuffer);
 }
 /** If the description cannot be encoded using current encoder, change the encoder */
 public void write(ByteArrayOutputStream tagBuffer) {
   if (((AbstractString) getObject(DataTypes.OBJ_DESCRIPTION)).canBeEncoded() == false) {
     this.setTextEncoding(TextEncoding.UTF_16);
   }
   super.write(tagBuffer);
 }