Index: openacs-4/packages/acs-lang/tcl/lang-util-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-lang/tcl/lang-util-procs.tcl,v
diff -u -r1.43 -r1.43.2.1
--- openacs-4/packages/acs-lang/tcl/lang-util-procs.tcl	13 Jul 2006 23:01:40 -0000	1.43
+++ openacs-4/packages/acs-lang/tcl/lang-util-procs.tcl	20 Feb 2007 00:41:21 -0000	1.43.2.1
@@ -366,9 +366,8 @@
     @param locale  Name of a locale, as language_COUNTRY using ISO 639 and ISO 3166
     @return        IANA MIME character set name
 } {
-    # LARS:
-    # This should probably be cached
-    return [db_string charset_for_locale {}]
+    # DRB: cache this now that ad_conn tracks it
+    return [db_string -cache_key ad_lang_mime_charset_$locale charset_for_locale {}]
 }
 
 ad_proc -private lang::util::default_locale_from_lang_not_cached { 
Index: openacs-4/packages/acs-lang/www/admin/locale-edit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-lang/www/admin/locale-edit.tcl,v
diff -u -r1.7 -r1.7.6.1
--- openacs-4/packages/acs-lang/www/admin/locale-edit.tcl	26 Feb 2005 16:00:10 -0000	1.7
+++ openacs-4/packages/acs-lang/www/admin/locale-edit.tcl	20 Feb 2007 00:41:21 -0000	1.7.6.1
@@ -153,6 +153,7 @@
             where locale = :locale"
 
     }
+    db_flush_cache -cache_key_pattern ad_lang_mime_charset_$locale
     forward "index?tab=locales"
 
 }
Index: openacs-4/packages/acs-tcl/tcl/request-processor-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/request-processor-procs.tcl,v
diff -u -r1.85 -r1.85.2.1
--- openacs-4/packages/acs-tcl/tcl/request-processor-procs.tcl	4 Jun 2006 00:45:47 -0000	1.85
+++ openacs-4/packages/acs-tcl/tcl/request-processor-procs.tcl	20 Feb 2007 00:41:21 -0000	1.85.2.1
@@ -645,6 +645,7 @@
     if { [catch {
         ad_conn -set locale [lang::conn::locale]
         ad_conn -set language [lang::conn::language]
+        ad_conn -set charset [lang::util::charset_for_locale [ad_conn locale]] 
     }] } {
         # acs-lang doesn't seem to be installed. Even though it must be installed now,
         # the problem is that if it isn't, everything breaks. So we wrap it in
@@ -653,6 +654,7 @@
         # to assume that most people have added acs-lang to their system.
         ad_conn -set locale ""
         ad_conn -set language ""
+        ad_conn -set charset ""
     }
 
     # Who's online
Index: openacs-4/packages/theme-zen/lib/lrn-master.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/theme-zen/lib/lrn-master.tcl,v
diff -u -r1.1.2.6 -r1.1.2.7
--- openacs-4/packages/theme-zen/lib/lrn-master.tcl	19 Feb 2007 18:28:42 -0000	1.1.2.6
+++ openacs-4/packages/theme-zen/lib/lrn-master.tcl	20 Feb 2007 00:41:21 -0000	1.1.2.7
@@ -267,8 +267,8 @@
 }
 
 
-append header_stuff {
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+append header_stuff [subst {
+<meta http-equiv="content-type" content="text/html; charset=[ad_conn charset]">
 <meta name="robots" content="all">
 <meta name="keywords" content="accessibility, portals, elearning, design">
 <link rel="stylesheet" type="text/css" href="/resources/theme-zen/css/main.css" media="screen">
@@ -277,7 +277,7 @@
 <link rel="alternate stylesheet" type="text/css" href="/resources/theme-zen/css/highContrast.css" title="highContrast">
 <link rel="alternate stylesheet" type="text/css" href="/resources/theme-zen/css/508.css" title="508">
 <script type="text/javascript" src="/resources/theme-zen/js/styleswitcher.js"></script>
-}
+}]
 
 if { [info exists text] } {
     set text [lang::util::localize $text]