@@ -22,6 +22,12 @@ Parameter CompileTime = {"""" _ $zd($h, 11) _ ", "_ $zdt($NOW(0), 2,1) _ " GMT""
2222/// Generated in GenerateFiles generator.
2323Parameter Files As CONFIGVALUE ;
2424
25+ /// Encoding to use to serve html/css/javascript files
26+ Parameter Encoding As %String = " utf-8" ;
27+
28+ /// List of mime types second parts (delimited by slash), which will Encoding be set for.
29+ Parameter UseEncodingFor = {$LB (" html" , " css" , " javascript" , " plain" )};
30+
2531/// A generator for Files parameter.
2632ClassMethod FillFiles () As %Status [ CodeMode = objectgenerator ]
2733{
@@ -61,15 +67,19 @@ ClassMethod Serve(file As %String) As %Status
6167 set xdata = ..GetXData (file )
6268 return :(xdata = " " ) ..Http404 ()
6369
70+ set useCharSet = (0 '=$LISTFIND (..#UseEncodingFor, $PIECE (xdata .MimeType , " /" , 2 )))
6471 set cTime = $PARAMETER ($ClassName (), " CompileTime" )
6572 set %response .ContentType = xdata .MimeType
73+ set :useCharSet %response .CharSet = " utf-8"
6674 do %response .SetHeader (" Last-Modified" , cTime )
6775 if (%request .GetCgiEnv (" HTTP_IF_MODIFIED_SINCE" ) = cTime ) {
6876 set %response .Status = " 304 Not Modified"
6977 return $$$OK
7078 }
7179
72- write $System .Encryption .Base64Decode (xdata .Data .Read (xdata .Data .Size ))
80+ set chunk = $System .Encryption .Base64Decode (xdata .Data .Read (xdata .Data .Size ))
81+ write :useCharSet $zcvt (chunk , " I" , " UTF8" )
82+ write :'useCharSet chunk
7383
7484 return $$$OK
7585}
0 commit comments