docs: private void appendField(final String value) throws IOException {
  		boolean alwaysDelimitText = config.alwaysDelimitText;
  		char textDelimiter = config.textDelimiter;
  		char fieldSeparator = config.fieldSeparator;
  
  		if (false == newline) {
  			writer.write(fieldSeparator);
  		} else {
  			newline = false;
  		}
  
  		if (null == value) {
  			if (alwaysDelimitText) {
  				writer.write(new char[] { textDelimiter, textDelimiter });
  			}
  			return;
  		}
  
  		final char[] valueChars = value.toCharArray();
  		boolean needsTextDelimiter = alwaysDelimitText;
  		boolean containsTextDelimiter = false;
  
  		for (final char c : valueChars) {
  			if (c == textDelimiter) {
  				// 字段值中存在包装符
  				containsTextDelimiter = needsTextDelimiter = true;
  				break;
  			} else if (c == fieldSeparator || c == CharUtil.LF || c == CharUtil.CR) {
  				// 包含分隔符或换行符需要包装符包装
  				needsTextDelimiter = true;
  			}
  		}
  
  		// 包装符开始
  		if (needsTextDelimiter) {
  			writer.write(textDelimiter);
  		}
  
  		// 正文
  		if (containsTextDelimiter) {
  			for (final char c : valueChars) {
  				// 转义文本包装符
  				if (c == textDelimiter) {
  					writer.write(textDelimiter);
  				}
  				writer.write(c);
  			}
  		} else {
  			writer.write(valueChars);
  		}
  
  		// 包装符结尾
  		if (needsTextDelimiter) {
  			writer.write(textDelimiter);
  		}
  	}