code: private int readStringRecordValue(DBaseFileField field, int nrecord, int nfield, byte[] rawData,
  			int rawOffset, OutputParameter<String> value) throws IOException {
  		final byte[] recordData = new byte[field.getLength()];
  		System.arraycopy(rawData, rawOffset, recordData, 0, recordData.length);
  
  		String data;
  		if (hasOption(OPTION_DECODE_STRING)) {
  			data = Locale.decodeString(recordData).trim();
  		} else {
  			data = new String(recordData).trim();
  		}
  
  		// ignore the data that does not contain anything
  		if (data == null || data.length() == 0 || DBaseFileField.isUnsetValue(data)) {
  			data = null;
  		}
  		value.set(data);
  		return recordData.length;
  	}
docs: Read a STRING record value.
  
  @param field is the current parsed field.
  @param nrecord is the number of the record
  @param nfield is the number of the field
  @param rawData raw data
  @param rawOffset is the index at which the data could be obtained
  @param value will be set with the value extracted from the dBASE file
  @return the count of consumed bytes
  @throws IOException in case of error.