code: public String getDataString() throws ID3v2FormatException
  	{
  		String str = null;
  
  		if (frameData.length > 1)
  		{
  			final String enc_type = (frameData[0] < ENC_TYPES.length)?ENC_TYPES[frameData[0]]:null;
  			try
  			{
  				if ((id.charAt(0) == 'T') || id.equals(ID3v2Frames.OWNERSHIP_FRAME))
  				{
  					str = Helpers.retrieveAsString(frameData, 1, frameData.length-1, enc_type);
  				}
  				else 
  				if (id.charAt(0) == 'W')
  				{
  					str = new String(frameData);
  				}
  				else 
  				if (id.equals(ID3v2Frames.USER_DEFINED_URL))
  				{
  					str = Helpers.retrieveAsString(frameData, 1, frameData.length-1, enc_type);
  					if (str.length()<frameData.length-1)
  					{
  						str += '\n';
  						str += Helpers.retrieveAsString(frameData, str.length()+2, frameData.length-2-str.length(), enc_type);
  					}
  				}
  				else 
  				if (id.equals(ID3v2Frames.UNSYNCHRONISED_LYRIC_TRANSCRIPTION) || id.equals(ID3v2Frames.COMMENTS) || id.equals(ID3v2Frames.TERMS_OF_USE))
  				{
  					str = Helpers.retrieveAsString(frameData, 4, frameData.length-4, enc_type);
  				}
  			}
  			catch (Throwable e)
  			{
  				throw new ID3v2FormatException("Frame " + id + " had errors!", e);
  			}
  		}
  
  		return str;
  	}
docs: If possible, this method attempts to convert textual part of the data
  into a string.  If this frame does not contain textual information,
  an empty string is returned.
  
  @return the textual portion of the data in this frame
  @exception ID3v2FormatException if an error occurs