# File wfo/form.rb, line 229
  def encode_application_x_www_form_urlencoded(submit_name=nil)
    successful = []
    has_submit = false
    @controls.each {|name, value, type, *rest|
      case type
      when :submit_button
        if !has_submit && name == submit_name
          successful << [name, value]
          has_submit = true
        end
      when :checkbox, :radio
        checked = rest[0]
        successful << [name, value] if checked
      when :text, :textarea, :password, :hidden
        successful << [name, value]
      when :select
        selected_options = []
        value.each {|option, selected| selected_options << option if selected }
        selected_options.each {|option| successful << [name, option] }
      else
        raise "unexpected control type: #{type}"
      end
    }
    accept_charset = @accept_charset.dup
    charset = accept_charset.shift
    begin
      encoded_successful = successful.map {|name, value|
        [name.encode_charset_exactly(charset), value.encode_charset_exactly(charset)]
      }
    rescue Iconv::Failure
      if charset = accept_charset.shift
        retry
      else
        encoded_successful = successful
      end
    end
    Escape.html_form(encoded_successful)
  end