@@ -22,6 +22,12 @@ Parameter CompileTime = {"""" _ $zd($h, 11) _ ", "_ $zdt($NOW(0), 2,1) _ " GMT""
22
22
/// Generated in GenerateFiles generator.
23
23
Parameter Files As CONFIGVALUE ;
24
24
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
+
25
31
/// A generator for Files parameter.
26
32
ClassMethod FillFiles () As %Status [ CodeMode = objectgenerator ]
27
33
{
@@ -61,15 +67,19 @@ ClassMethod Serve(file As %String) As %Status
61
67
set xdata = ..GetXData (file )
62
68
return :(xdata = " " ) ..Http404 ()
63
69
70
+ set useCharSet = (0 '=$LISTFIND (..#UseEncodingFor, $PIECE (xdata .MimeType , " /" , 2 )))
64
71
set cTime = $PARAMETER ($ClassName (), " CompileTime" )
65
72
set %response .ContentType = xdata .MimeType
73
+ set :useCharSet %response .CharSet = " utf-8"
66
74
do %response .SetHeader (" Last-Modified" , cTime )
67
75
if (%request .GetCgiEnv (" HTTP_IF_MODIFIED_SINCE" ) = cTime ) {
68
76
set %response .Status = " 304 Not Modified"
69
77
return $$$OK
70
78
}
71
79
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
73
83
74
84
return $$$OK
75
85
}
0 commit comments