Ns startcontent

From AOLserver Wiki
Revision as of 04:25, 11 October 2009 by Akhassin (talk | contribs)
Jump to navigation Jump to search

<manpage>ns_startcontent</manpage>

NAME

ns_startcontent - Configures connection for encoding non-binary content to be returned with ns_write

SYNOPSIS

ns_startcontent ?-type content_type_and_charset | -charset charset?

DESCRIPTION

This command is used to set the appropriate encoding prior to returning the content part of the response via ns_write.

EXAMPLES

From Character Encoding in AOLserver:
# Assume japanesetext.html_sj is stored in Shift-JIS encoding.
set fd [open japanesetext.html_sj r]
fconfigure $fd -encoding shiftjis
set html [read $fd [file size japanesetext.html_sj]]
close $fd
set charset [ns_choosecharset -preference {utf-8 shift-jis euc-jp iso-2022-jp}]
set type "text/html; charset=$charset"
ns_write "HTTP/1.0 200 OK
Content-Type: $type
\n"
ns_startcontent -type $type
ns_write $html

NOTES

In AOLserver 4.5, ns_startcontent's behavior has changed, so it may be convenient to reimplement ns_startcontent to be backward compatible as follows:
 if {[ns_info version] >= 4.5} {
   catch {rename ns_startcontent {}}
   proc ns_startcontent {args} {
   #
   # Re-implement ns_startcontent in Tcl in AOLserver 4.5
   # because the -type option no longer falls back to
   # server's default encoding like it did in 4.0.
   # Luckily, in 4.5, ns_adp_mimetype now just
   # calls Ns_ConnSetType() which still does
   # and works outside of adps
   #
       if {[llength $args]} {
           switch [string range [lindex $args 0] 1 end] {
               charset {
                   ns_conn encoding [ns_encodingforcharset [lindex $args 1]]
               }
               type {
                   ns_adp_mimetype [lindex $args 1]
               }
           }
       }
       # NaviServer removed write_encoded
       catch {ns_conn write_encoded 1}
       return ""
   }
 }

SEE ALSO

ns_write, ns_choosecharset, ns_config