From 4785f07f12ff7a8a2cee0b2a10abf90f35b3c478 Mon Sep 17 00:00:00 2001
From: Markus Birth <mbirth@gmail.com>
Date: Sun, 20 Feb 2022 17:14:54 +0100
Subject: [PATCH] Always assume UTF-8.

---
 bundled-libs/Onyx/RSS.php                     |  4 +-
 comment.php                                   |  2 +-
 include/admin/import.inc.php                  | 28 +++----------
 include/admin/importers/livejournal.inc.php   |  2 +-
 include/compat.inc.php                        | 18 ++------
 include/functions.inc.php                     | 41 ++++++-------------
 include/functions_comments.inc.php            |  4 +-
 include/functions_images.inc.php              |  5 +--
 include/functions_permalinks.inc.php          | 18 ++++----
 include/functions_smarty.inc.php              |  7 +---
 include/functions_trackbacks.inc.php          | 20 +++------
 include/template_api.inc.php                  |  4 +-
 index.php                                     |  2 +-
 lang/UTF-8/serendipity_lang_bg.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_cn.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_cs.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_cz.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_da.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_de.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_en.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_es.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_fa.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_fi.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_fr.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_hu.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_is.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_it.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_ja.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_ko.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_nl.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_no.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_pl.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_pt.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_pt_PT.inc.php     |  3 +-
 lang/UTF-8/serendipity_lang_ro.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_ru.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_sa.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_se.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_sk.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_ta.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_tn.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_tr.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_tw.inc.php        |  3 +-
 lang/UTF-8/serendipity_lang_zh.inc.php        |  3 +-
 lib/LuckyCoin/Database/MysqliDatabase.php     | 17 +++-----
 lib/LuckyCoin/Routing.php                     |  2 +-
 .../serendipity_event_gravatar.php            |  6 +--
 .../serendipity_event_spartacus.php           | 22 +---------
 .../serendipity_event_xhtmlcleanup.php        | 12 +-----
 .../serendipity_plugin_comments.php           | 15 ++++---
 .../serendipity_plugin_remoterss.php          | 41 ++-----------------
 serendipity.css.php                           |  2 +-
 serendipity_admin.php                         |  2 +-
 serendipity_admin_image_selector.php          |  2 +-
 serendipity_config.inc.php                    |  3 --
 templates/2k11/admin/index.tpl                |  4 +-
 templates/2k11/admin/installer.inc.tpl        |  2 +-
 templates/2k11/admin/upgrader.inc.tpl         |  4 +-
 templates/clean-blog/config.inc.php           |  2 +-
 templates/default/admin/index.tpl             |  2 +-
 templates/default/admin/media_choose.tpl      |  2 +-
 61 files changed, 110 insertions(+), 278 deletions(-)

diff --git a/bundled-libs/Onyx/RSS.php b/bundled-libs/Onyx/RSS.php
index 901a548e..bb2c5a59 100644
--- a/bundled-libs/Onyx/RSS.php
+++ b/bundled-libs/Onyx/RSS.php
@@ -69,7 +69,7 @@ class ONYX_RSS
       }
 
       if ($charset == 'native') {
-         $charset = LANG_CHARSET;
+         $charset = 'UTF-8';
       }
       $this->parser = @xml_parser_create($charset);
       if (!is_resource($this->parser))
@@ -79,7 +79,7 @@ class ONYX_RSS
       }
       xml_set_object($this->parser, $this);
       xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
-      @xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, LANG_CHARSET);
+      @xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
       xml_set_element_handler($this->parser, 'tag_open', 'tag_close');
       xml_set_character_data_handler($this->parser, 'cdata');
    }
diff --git a/comment.php b/comment.php
index f7d60c46..efa5ed5c 100644
--- a/comment.php
+++ b/comment.php
@@ -12,7 +12,7 @@ use LuckyCoin\PageGenerator;
 include('serendipity_config.inc.php');
 include S9Y_INCLUDE_PATH . 'include/functions_entries_admin.inc.php';
 
-header('Content-Type: text/html; charset=' . LANG_CHARSET);
+header('Content-Type: text/html; charset=utf-8');
 $raw_post_data = file_get_contents("php://input");
 
 if (isset($serendipity['GET']['delete'], $serendipity['GET']['entry'], $serendipity['GET']['type']) && serendipity_checkFormToken()) {
diff --git a/include/admin/import.inc.php b/include/admin/import.inc.php
index 9da8219d..52062432 100644
--- a/include/admin/import.inc.php
+++ b/include/admin/import.inc.php
@@ -42,23 +42,7 @@ class Serendipity_Import {
  */
     function getCharsets($utf8_default = true) {
         $charsets = array();
-
-        if (!$utf8_default) {
-            $charsets['native'] = LANG_CHARSET;
-        }
-
-        if (LANG_CHARSET != 'UTF-8') {
-            $charsets['UTF-8'] = 'UTF-8';
-        }
-
-        if (LANG_CHARSET != 'ISO-8859-1') {
-            $charsets['ISO-8859-1'] = 'ISO-8859-1';
-        }
-
-        if ($utf8_default) {
-            $charsets['native'] = LANG_CHARSET;
-        }
-
+        $charsets['native'] = 'UTF-8';
         return $charsets;
     }
 
@@ -71,7 +55,7 @@ class Serendipity_Import {
  */
     function &decode($string) {
         // xml_parser_* functions do recoding from ISO-8859-1/UTF-8
-        if (!$this->force_recode && (LANG_CHARSET == 'ISO-8859-1' || LANG_CHARSET == 'UTF-8')) {
+        if (!$this->force_recode) {
             return $string;
         }
 
@@ -83,13 +67,11 @@ class Serendipity_Import {
 
             case 'ISO-8859-1':
                 if (function_exists('iconv')) {
-                    $out = iconv('ISO-8859-1', LANG_CHARSET, $string);
+                    $out = iconv('ISO-8859-1', 'UTF-8', $string);
                 } elseif (function_exists('recode')) {
-                    $out = recode('iso-8859-1..' . LANG_CHARSET, $string);
-                } elseif (LANG_CHARSET == 'UTF-8') {
-                    return utf8_encode($string);
+                    $out = recode('iso-8859-1..UTF-8', $string);
                 } else {
-                    return $string;
+                    return utf8_encode($string);
                 }
                 return $out;
 
diff --git a/include/admin/importers/livejournal.inc.php b/include/admin/importers/livejournal.inc.php
index 0fdd8af8..943410cc 100644
--- a/include/admin/importers/livejournal.inc.php
+++ b/include/admin/importers/livejournal.inc.php
@@ -123,7 +123,7 @@ class Serendipity_Import_LiveJournalXML extends Serendipity_Import {
             }
 
             xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0);
-            @xml_parser_set_option($p, XML_OPTION_TARGET_ENCODING, LANG_CHARSET);
+            @xml_parser_set_option($p, XML_OPTION_TARGET_ENCODING, 'UTF-8');
             $xml_package = $xml_string . "\n" . $xml_package;
             xml_parse_into_struct($p, $xml_package, $vals);
             xml_parser_free($p);
diff --git a/include/compat.inc.php b/include/compat.inc.php
index 6688e1ac..5fae1e4a 100644
--- a/include/compat.inc.php
+++ b/include/compat.inc.php
@@ -428,7 +428,7 @@ if (function_exists('date_default_timezone_get')) {
  * In PHP 5.4, the default encoding of htmlspecialchar changed to UTF-8 and it will emit empty strings when given
  * native encoded strings containing umlauts. This wrapper should to be used in the core until PHP 5.6 fixes the bug.
  */
-function serendipity_specialchars($string, $flags = null, $encoding = LANG_CHARSET, $double_encode = true) {
+function serendipity_specialchars($string, $flags = null, $encoding = 'UTF-8', $double_encode = true) {
     if ($flags == null) {
         if (defined('ENT_HTML401')) {
             // Added with PHP 5.4.x
@@ -439,19 +439,13 @@ function serendipity_specialchars($string, $flags = null, $encoding = LANG_CHARS
         }
     }
 
-    if ($encoding == 'LANG_CHARSET') {
-        // if called before LANG_CHARSET is set, we need to set a fallback encoding to not throw a php warning that
-        // would kill s9y blogs sometimes (https://github.com/s9y/Serendipity/issues/236)
-        $encoding = 'UTF-8';
-    }
-
     return htmlspecialchars($string, $flags, $encoding, $double_encode);
 }
 
 /**
  * see serendipity_specialchars
  */
-function serendipity_entities($string, $flags = null, $encoding = LANG_CHARSET, $double_encode = true) {
+function serendipity_entities($string, $flags = null, $encoding = 'UTF-8', $double_encode = true) {
     if ($flags == null) {
         if (defined('ENT_HTML401')) {
             // Added with PHP 5.4.x
@@ -461,16 +455,13 @@ function serendipity_entities($string, $flags = null, $encoding = LANG_CHARSET,
             $flags = ENT_COMPAT;
         }
     }
-    if ($encoding == 'LANG_CHARSET') {
-        $encoding = 'UTF-8';
-    }
     return htmlentities($string, $flags, $encoding, $double_encode);
 }
 
 /**
  * serendipity_specialchars
  */
-function serendipity_entity_decode($string, $flags = null, $encoding = LANG_CHARSET) {
+function serendipity_entity_decode($string, $flags = null, $encoding = 'UTF-8') {
     if ($flags == null) {
         # NOTE: ENT_SUBSTITUTE does not exist for this function, and the documentation does not specify that it will
         # ever echo empty strings on charset errors
@@ -482,9 +473,6 @@ function serendipity_entity_decode($string, $flags = null, $encoding = LANG_CHAR
             $flags = ENT_COMPAT;
         }
     }
-    if ($encoding == 'LANG_CHARSET') {
-        $encoding = 'UTF-8';
-    }
     return html_entity_decode($string, $flags, $encoding);
 }
 
diff --git a/include/functions.inc.php b/include/functions.inc.php
index b6647de3..a0725f20 100644
--- a/include/functions.inc.php
+++ b/include/functions.inc.php
@@ -126,7 +126,7 @@ function serendipity_strftime($format, $timestamp = null, $useOffset = true, $us
 
     if ($is_win_utf === null) {
         // Windows does not have UTF-8 locales.
-        $is_win_utf = (LANG_CHARSET == 'UTF-8' && strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? true : false);
+        $is_win_utf = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' ? true : false);
     }
 
     if ($useDate) {
@@ -516,7 +516,7 @@ function serendipity_sendMail($to, $subject, $message, $fromMail, $headers = NUL
         'message'  => &$message
     );
 
-    serendipity_plugin_api::hook_event('backend_sendmail', $maildata, LANG_CHARSET);
+    serendipity_plugin_api::hook_event('backend_sendmail', $maildata, 'UTF-8');
 
     // This routine can be overridden by a plugin.
     if ($maildata['legacy']) {
@@ -526,8 +526,8 @@ function serendipity_sendMail($to, $subject, $message, $fromMail, $headers = NUL
             // Usually this is according to spec, but for us it caused more trouble than
             // it prevented.
             // Regards to Mark Kronsbein for finding this issue!
-            $maildata['subject'] = str_replace(array("\n", "\r"), array('', ''), mb_encode_mimeheader($maildata['subject'], LANG_CHARSET));
-            $maildata['fromName'] = str_replace(array("\n", "\r"), array('', ''), mb_encode_mimeheader($maildata['fromName'], LANG_CHARSET));
+            $maildata['subject'] = str_replace(array("\n", "\r"), array('', ''), mb_encode_mimeheader($maildata['subject'], 'UTF-8'));
+            $maildata['fromName'] = str_replace(array("\n", "\r"), array('', ''), mb_encode_mimeheader($maildata['fromName'], 'UTF-8'));
         }
 
 
@@ -543,17 +543,15 @@ function serendipity_sendMail($to, $subject, $message, $fromMail, $headers = NUL
         $maildata['headers'][] = 'Message-ID: <'. bin2hex(random_bytes(16)) .'@'. $_SERVER['HTTP_HOST'] .'>';
         $maildata['headers'][] = 'MIME-Version: 1.0';
         $maildata['headers'][] = 'Precedence: bulk';
-        $maildata['headers'][] = 'Content-Type: text/plain; charset=' . LANG_CHARSET;
+        $maildata['headers'][] = 'Content-Type: text/plain; charset=utf-8';
         $maildata['headers'][] = 'Auto-Submitted: auto-generated';
 
-        if (LANG_CHARSET == 'UTF-8') {
-            if (function_exists('imap_8bit') && !$serendipity['forceBase64']) {
-                $maildata['headers'][] = 'Content-Transfer-Encoding: quoted-printable';
-                $maildata['message']   = str_replace("\r\n","\n",imap_8bit($maildata['message']));
-            } else {
-                $maildata['headers'][] = 'Content-Transfer-Encoding: base64';
-                $maildata['message']   = chunk_split(base64_encode($maildata['message']));
-            }
+        if (function_exists('imap_8bit') && !$serendipity['forceBase64']) {
+            $maildata['headers'][] = 'Content-Transfer-Encoding: quoted-printable';
+            $maildata['message']   = str_replace("\r\n","\n",imap_8bit($maildata['message']));
+        } else {
+            $maildata['headers'][] = 'Content-Transfer-Encoding: base64';
+            $maildata['message']   = chunk_split(base64_encode($maildata['message']));
         }
     }
 
@@ -592,22 +590,7 @@ function serendipity_fetchReferences($id) {
  * @return  string  The output string
  */
 function serendipity_utf8_encode($string) {
-    if (strtolower(LANG_CHARSET) != 'utf-8') {
-        if (function_exists('iconv')) {
-            $new = iconv(LANG_CHARSET, 'UTF-8', $string);
-            if ($new !== false) {
-                return $new;
-            } else {
-                return utf8_encode($string);
-            }
-        } else if (function_exists('mb_convert_encoding')) {
-            return mb_convert_encoding($string, 'UTF-8', LANG_CHARSET);
-        } else {
-            return utf8_encode($string);
-        }
-    } else {
-        return $string;
-    }
+    return $string;
 }
 
 /**
diff --git a/include/functions_comments.inc.php b/include/functions_comments.inc.php
index 109aaa9d..33bdd978 100644
--- a/include/functions_comments.inc.php
+++ b/include/functions_comments.inc.php
@@ -76,7 +76,7 @@ function serendipity_checkCommentTokenModeration($uri) {
             } else {
                 $return_msg = sprintf (BADTOKEN)."\n";
             }
-            header('Content-Type: text/plain; charset='. LANG_CHARSET);
+            header('Content-Type: text/plain; charset=utf-8');
             die($return_msg);
         }
     }
@@ -102,7 +102,7 @@ function serendipity_checkCommentTokenModeration($uri) {
             } else {
                 $return_msg = sprintf (BADTOKEN)."\n";
             }
-            header('Content-Type: text/plain; charset='. LANG_CHARSET);
+            header('Content-Type: text/plain; charset=utf-8');
             die($return_msg);
         }
     }
diff --git a/include/functions_images.inc.php b/include/functions_images.inc.php
index e706a2b3..daf5cda7 100644
--- a/include/functions_images.inc.php
+++ b/include/functions_images.inc.php
@@ -2322,10 +2322,7 @@ function serendipity_renameFile($id, $newName, $path = null) {
         return;
     }
     $oldName = $file['name'];
-    
-    if (LANG_CHARSET == 'UTF-8') {
-        $newName = utf8_encode($newName);
-    }
+    $newName = utf8_encode($newName);
 
     if ($path === null) {
         $path = $file['path'];
diff --git a/include/functions_permalinks.inc.php b/include/functions_permalinks.inc.php
index 73b12db7..ec7c472b 100644
--- a/include/functions_permalinks.inc.php
+++ b/include/functions_permalinks.inc.php
@@ -175,20 +175,16 @@ function serendipity_makeFilename($str, $stripDots = false) {
             // The array of chars is defined in the language file.
             $str = str_replace($GLOBALS['i18n_filename_from'], $GLOBALS['i18n_filename_to'], $str);
 
-            if (LANG_CHARSET == 'UTF-8') {
-                // URLs need to be 7bit - since this function takes care of the most common ISO-8859-1
-                // characters, try to UTF8-decode the string first.
-                $str = utf8_decode($str);
-            }
+            // URLs need to be 7bit - since this function takes care of the most common ISO-8859-1
+            // characters, try to UTF8-decode the string first.
+            $str = utf8_decode($str);
         } else {
             // Replace international chars not detected by every locale
             $str = str_replace($from, $to, $str);
 
-            if (LANG_CHARSET == 'UTF-8') {
-                // URLs need to be 7bit - since this function takes care of the most common ISO-8859-1
-                // characters, try to UTF8-decode the string first.
-                $str = utf8_decode($str);
-            }
+            // URLs need to be 7bit - since this function takes care of the most common ISO-8859-1
+            // characters, try to UTF8-decode the string first.
+            $str = utf8_decode($str);
         }
 
         // Nuke chars not allowed in our URI
@@ -857,4 +853,4 @@ function serendipity_getUriArguments($uri, $wildcard = false) {
     } else {
         return array();
     }
-}
\ No newline at end of file
+}
diff --git a/include/functions_smarty.inc.php b/include/functions_smarty.inc.php
index b2bf77fd..2d875e76 100644
--- a/include/functions_smarty.inc.php
+++ b/include/functions_smarty.inc.php
@@ -928,11 +928,6 @@ function serendipity_smarty_init($vars = array()) {
             $prev_smarty = $_SESSION['no_smarty'] ?? null;
             $_SESSION['no_smarty'] = true;
 
-            if (LANG_CHARSET != 'UTF-8') {
-                @define('SMARTY_MBSTRING', false);
-                @define('SMARTY_RESOURCE_CHAR_SET', LANG_CHARSET);
-            }
-
             // define cache resources to load with smarty - see smarty cache readme - needs enabled cache!
             #@define('APC_EXTENSION_LOADED', extension_loaded('apc') && ini_get('apc.enabled'));
             #@define('MEMCACHE_EXTENSION_LOADED', (class_exists('Memcached',false) || class_exists('Memcache',false)) && (extension_loaded("memcached") || extension_loaded("memcache")));
@@ -1081,7 +1076,7 @@ function serendipity_smarty_init($vars = array()) {
 
         $serendipity['smarty']->assign(
             array(
-                'head_charset'              => LANG_CHARSET,
+                'head_charset'              => 'UTF-8',
                 'head_version'              => $serendipity['version'],
                 'head_title'                => $serendipity['head_title'] ?? null,
                 'head_subtitle'             => $serendipity['head_subtitle'] ?? null,
diff --git a/include/functions_trackbacks.inc.php b/include/functions_trackbacks.inc.php
index 14b89c85..cbc8206d 100644
--- a/include/functions_trackbacks.inc.php
+++ b/include/functions_trackbacks.inc.php
@@ -354,22 +354,14 @@ function add_trackback($id, $title, $url, $name, $excerpt) {
         'comment' => $excerpt
     );
 
-    $is_utf8 = strtolower(LANG_CHARSET) == 'utf-8';
+    $is_utf8 = true;
     log_trackback('TRACKBACK TRANSCODING CHECK');
 
     foreach($comment AS $idx => $field) {
-        if (is_utf8($field)) {
-            // Trackback is in UTF-8. Check if our blog also is UTF-8.
-            if (!$is_utf8) {
-                log_trackback('Transcoding ' . $idx . ' from UTF-8 to ISO');
-                $comment[$idx] = utf8_decode($field);
-            }
-        } else {
+        if (!is_utf8($field)) {
             // Trackback is in some native format. We assume ISO-8859-1. Check if our blog is also ISO.
-            if ($is_utf8) {
-                log_trackback('Transcoding ' . $idx . ' from ISO to UTF-8');
-                $comment[$idx] = utf8_encode($field);
-            }
+            log_trackback('Transcoding ' . $idx . ' from ISO to UTF-8');
+            $comment[$idx] = utf8_encode($field);
         }
     }
 
@@ -553,7 +545,7 @@ function fetchPingbackData(&$comment) {
 
         // Get a title
         if (preg_match('@<head[^>]*>.*?<title[^>]*>(.*?)</title>.*?</head>@is',$fContent,$matches)) {
-            $comment['title'] = serendipity_entity_decode(strip_tags($matches[1]), ENT_COMPAT, LANG_CHARSET);
+            $comment['title'] = serendipity_entity_decode(strip_tags($matches[1]), ENT_COMPAT, 'UTF-8');
         }
 
         // Try to get content from first <p> tag on:
@@ -589,7 +581,7 @@ function trackback_body_strip($body){
     $body = str_replace('&nbsp;', ' ', $body);
 
     // strip html entities and tags.
-    $body = serendipity_entity_decode(strip_tags($body), ENT_COMPAT, LANG_CHARSET);
+    $body = serendipity_entity_decode(strip_tags($body), ENT_COMPAT, 'UTF-8');
 
     // replace whitespace with single space
     $body = preg_replace('@\s+@s', ' ', $body);
diff --git a/include/template_api.inc.php b/include/template_api.inc.php
index da7115ab..08d741a5 100644
--- a/include/template_api.inc.php
+++ b/include/template_api.inc.php
@@ -233,8 +233,8 @@ class serendipity_smarty_emulator_xml extends serendipity_smarty_emulator {
     }
 
     function __construct() {
-        header('Content-Type: text/xml; charset=' . LANG_CHARSET);
-        echo '<?xml version="1.0" encoding="' . LANG_CHARSET . '" ?>' . "\n";
+        header('Content-Type: text/xml; charset=utf-8');
+        echo '<?xml version="1.0" encoding="utf-8" ?>' . "\n";
         /*
         echo '<?xml-stylesheet href="' . serendipity_getTemplateFile('xml.css') . '" type="text/css" ?>' . "\n";
         */
diff --git a/index.php b/index.php
index c1315f78..68e34f3c 100644
--- a/index.php
+++ b/index.php
@@ -14,7 +14,7 @@ header('Status: 200 OK');
 
 // Session are needed to also remember an autologin user on the frontend
 include('serendipity_config.inc.php');
-header('Content-Type: text/html; charset='. LANG_CHARSET);
+header('Content-Type: text/html; charset=utf-8');
 
 if ($serendipity['CacheControl']) {
     if (!empty($_SERVER['SERVER_SOFTWARE']) && strstr($_SERVER['SERVER_SOFTWARE'], 'Apache/2')) {
diff --git a/lang/UTF-8/serendipity_lang_bg.inc.php b/lang/UTF-8/serendipity_lang_bg.inc.php
index 95987977..0f385fc3 100644
--- a/lang/UTF-8/serendipity_lang_bg.inc.php
+++ b/lang/UTF-8/serendipity_lang_bg.inc.php
@@ -9,7 +9,6 @@
 $i18n_filename_from = array(' ', 'а', 'А', 'б', 'Б', 'в', 'В', 'г', 'Г', 'д', 'Д', 'е', 'Е', 'Ж', 'ж', 'з', 'З', 'и', 'И', 'й', 'Й', 'к', 'К', 'л', 'Л', 'м', 'М', 'н', 'Н', 'о', 'О', 'п', 'П', 'р', 'Р', 'с', 'С', 'т', 'Т', 'у', 'У', 'ф', 'Ф', 'х', 'Х', 'ц', 'Ц', 'ч', 'Ч', 'ш', 'Ш', 'щ', 'Щ', 'ъ', 'Ъ', 'ь', 'Ь', 'ю', 'Ю', 'я', 'Я');
 $i18n_filename_to   = array('-', 'a', 'A', 'b', 'B', 'v', 'V', 'g', 'G', 'd', 'D', 'e', 'E', 'Zh', 'zh', 'z', 'Z', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'f', 'F', 'h', 'H', 'c', 'C', 'ch', 'Ch', 'sh', 'Sh', 'sht', 'Sht', 'a', 'A', 'y', 'Y', 'ju', 'Ju', 'ja', 'Ja');
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'bulgarian, bg, bg_BG');
 @define('DATE_FORMAT_ENTRY', '%A, %e %B %Y');
@@ -1287,4 +1286,4 @@ $i18n_filename_to   = array('-', 'a', 'A', 'b', 'B', 'v', 'V', 'g', 'G', 'd', 'D
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_cn.inc.php b/lang/UTF-8/serendipity_lang_cn.inc.php
index 4fea7a6e..5466a150 100644
--- a/lang/UTF-8/serendipity_lang_cn.inc.php
+++ b/lang/UTF-8/serendipity_lang_cn.inc.php
@@ -6,7 +6,6 @@
 #          http://www.cexten.com  
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'zh_CN.UTF-8, cn, zh');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1284,4 +1283,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_cs.inc.php b/lang/UTF-8/serendipity_lang_cs.inc.php
index 4434fdfa..66303f6c 100644
--- a/lang/UTF-8/serendipity_lang_cs.inc.php
+++ b/lang/UTF-8/serendipity_lang_cs.inc.php
@@ -35,7 +35,6 @@ $i18n_filename_to = array (
 'A','C','D','E','E','I','L','L','N','O','R','R','S','S','T','U','U','Y','Z','Z',
 '-', '', '', '',
 );
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'cs_CZ.UTF-8, czech, cs');
 @define('DATE_FORMAT_ENTRY', '%A, %e. %B %Y');
@@ -1313,4 +1312,4 @@ $i18n_filename_to = array (
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Čeká na potvrzení');
 @define('NO_COMMENT_SUBSCRIPTION', 'Neodebíráno');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_cz.inc.php b/lang/UTF-8/serendipity_lang_cz.inc.php
index 0f2f9589..17dc82aa 100644
--- a/lang/UTF-8/serendipity_lang_cz.inc.php
+++ b/lang/UTF-8/serendipity_lang_cz.inc.php
@@ -35,7 +35,6 @@ $i18n_filename_to = array (
 'A','C','D','E','E','I','L','L','N','O','R','R','S','S','T','U','U','Y','Z','Z',
 '-', '', '', '',
 );
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'cs_CZ.UTF-8, cs_CZ.UTF8, czech, cs');
 @define('DATE_FORMAT_ENTRY', '%A, %e. %B %Y');
@@ -1313,4 +1312,4 @@ $i18n_filename_to = array (
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Čeká na potvrzení');
 @define('NO_COMMENT_SUBSCRIPTION', 'Neodebíráno');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_da.inc.php b/lang/UTF-8/serendipity_lang_da.inc.php
index 15ab8e83..18be637a 100644
--- a/lang/UTF-8/serendipity_lang_da.inc.php
+++ b/lang/UTF-8/serendipity_lang_da.inc.php
@@ -6,7 +6,6 @@
 #            Robert Piil, <robert@piil.org>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'da_DK.UTF8, da_DK.UTF-8, danish, da, da_DK');
 @define('DATE_FORMAT_ENTRY', '%A d. %e. %B %Y');
@@ -1284,4 +1283,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_de.inc.php b/lang/UTF-8/serendipity_lang_de.inc.php
index d3b3f083..dcbf34da 100644
--- a/lang/UTF-8/serendipity_lang_de.inc.php
+++ b/lang/UTF-8/serendipity_lang_de.inc.php
@@ -4,7 +4,6 @@
 # Translation (c) Jannis Hermanns, Garvin Hicking and others
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'de_DE.UTF-8, de_DE.UTF8, german, de_DE, de_DE@euro, de');
 @define('DATE_FORMAT_ENTRY', '%A, %e. %B %Y');
@@ -1282,4 +1281,4 @@
 @define('PLUGIN_GROUP_ALL', 'Alle Kategorien');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Wartet auf Bestätigung');
 @define('NO_COMMENT_SUBSCRIPTION', 'Nicht abonniert');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_en.inc.php b/lang/UTF-8/serendipity_lang_en.inc.php
index 2483c976..f11e124f 100644
--- a/lang/UTF-8/serendipity_lang_en.inc.php
+++ b/lang/UTF-8/serendipity_lang_en.inc.php
@@ -3,7 +3,6 @@
 # All rights reserved.  See LICENSE file for licensing details
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'en_US.UTF-8, en_US.UTF8, english, en, en_US');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1281,4 +1280,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_es.inc.php b/lang/UTF-8/serendipity_lang_es.inc.php
index d3ab2ea9..d9d72e90 100644
--- a/lang/UTF-8/serendipity_lang_es.inc.php
+++ b/lang/UTF-8/serendipity_lang_es.inc.php
@@ -15,7 +15,6 @@
  * file -> fichero¿? (se podría utilizar archivo para referirse a las entradas pasadas)
  */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'es_ES.UTF8, es_ES.ISO8859-1, spanish, sp, es, es_ES, es-ES, es_ES.ISO_8859-15, es_ES.ISO_8859-1');
 @define('DATE_FORMAT_ENTRY', '%A, %e de %B del %Y');
@@ -1293,4 +1292,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_fa.inc.php b/lang/UTF-8/serendipity_lang_fa.inc.php
index 14392184..a53e456e 100644
--- a/lang/UTF-8/serendipity_lang_fa.inc.php
+++ b/lang/UTF-8/serendipity_lang_fa.inc.php
@@ -5,7 +5,6 @@
 # Please report me any bug with <webmaster@oxygenws.com>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'fa_IR.UTF-8, fa_IR, persian, fa');
 @define('DATE_FORMAT_ENTRY', '%A، %e %B %Y');
@@ -1283,4 +1282,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_fi.inc.php b/lang/UTF-8/serendipity_lang_fi.inc.php
index 67caaffd..064d201b 100644
--- a/lang/UTF-8/serendipity_lang_fi.inc.php
+++ b/lang/UTF-8/serendipity_lang_fi.inc.php
@@ -4,7 +4,6 @@
 # Translation by Mauri Sahlberg <mos@iki.fi>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'fi_FI.UTF-8, finnish, fi');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1282,4 +1281,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_fr.inc.php b/lang/UTF-8/serendipity_lang_fr.inc.php
index af589ae5..3734dcdf 100644
--- a/lang/UTF-8/serendipity_lang_fr.inc.php
+++ b/lang/UTF-8/serendipity_lang_fr.inc.php
@@ -7,7 +7,6 @@
 # http://www.sossan-martin.com
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'fr_FR.UTF-8, fr_FR.UTF8, french, fr, fr_FR, fr_FR@euro, en_US');
 @define('DATE_FORMAT_ENTRY', '%A, %e %B %Y');
@@ -1285,4 +1284,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_hu.inc.php b/lang/UTF-8/serendipity_lang_hu.inc.php
index f369a607..8e490a49 100644
--- a/lang/UTF-8/serendipity_lang_hu.inc.php
+++ b/lang/UTF-8/serendipity_lang_hu.inc.php
@@ -4,7 +4,6 @@
 # Translation (c) by Márton Pósz <ful_s@AT@passwd.hu> and Hrotkó Gábor <roti@al.pmmf.hu>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'hu_HU.UTF-8, hu_HU.UTF8, hungarian, hu, hu_HU');
 @define('DATE_FORMAT_ENTRY', '%Y. %B %e. (%A) ');
@@ -1282,4 +1281,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_is.inc.php b/lang/UTF-8/serendipity_lang_is.inc.php
index 25bb7b77..978cb9be 100644
--- a/lang/UTF-8/serendipity_lang_is.inc.php
+++ b/lang/UTF-8/serendipity_lang_is.inc.php
@@ -4,7 +4,6 @@
 # Translation by Örn Arnarson <orn@arnarson.net>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'is_IS.UTF-8, is_IS.UTF8, icelandic, is, is_IS');
 @define('DATE_FORMAT_ENTRY', '%A, %e. %B %Y');
@@ -1282,4 +1281,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_it.inc.php b/lang/UTF-8/serendipity_lang_it.inc.php
index 248b9a19..8303c84b 100644
--- a/lang/UTF-8/serendipity_lang_it.inc.php
+++ b/lang/UTF-8/serendipity_lang_it.inc.php
@@ -5,7 +5,6 @@
 #         and (c) by Marco Solari <marco.solari@koinesistemi.it>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'it_IT.UTF-8, it_IT.UTF8, italiano, it, it_IT');
 @define('DATE_FORMAT_ENTRY', '%A, %e %B %Y');
@@ -1283,4 +1282,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_ja.inc.php b/lang/UTF-8/serendipity_lang_ja.inc.php
index 2d376804..15a50635 100644
--- a/lang/UTF-8/serendipity_lang_ja.inc.php
+++ b/lang/UTF-8/serendipity_lang_ja.inc.php
@@ -4,7 +4,6 @@
 # Translation (c) Tadashi Jokagi <elf2000@users.sourceforge.net>, 2004-2010.
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'ja_JP.UTF-8,ja,jp');
 @define('DATE_FORMAT_ENTRY', '%Y年 %B %e(%A)');
@@ -1282,4 +1281,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_ko.inc.php b/lang/UTF-8/serendipity_lang_ko.inc.php
index 593c0fd8..874c4ff9 100644
--- a/lang/UTF-8/serendipity_lang_ko.inc.php
+++ b/lang/UTF-8/serendipity_lang_ko.inc.php
@@ -5,7 +5,6 @@
 # (c) 2005, 2016 http://www.tool-box.info/
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'ko_KR.UTF-8, korean, ko, ko_KR');
 @define('DATE_FORMAT_ENTRY', '%Y년 %B %e일 %A');
@@ -1283,4 +1282,4 @@
 @define('PLUGIN_GROUP_ALL', '모든 범주');
 @define('PENDING_COMMENT_SUBSCRIPTION', '구독 대기 중');
 @define('NO_COMMENT_SUBSCRIPTION', '구독되지 않음');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_nl.inc.php b/lang/UTF-8/serendipity_lang_nl.inc.php
index ca2df947..26e1b205 100644
--- a/lang/UTF-8/serendipity_lang_nl.inc.php
+++ b/lang/UTF-8/serendipity_lang_nl.inc.php
@@ -6,7 +6,6 @@
 # (c) 2007 Sam Geeraerts <samgee@elmundolibre.be>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'nl_BE.UTF-8, nl_BE.UTF-8, dutch, nl_BE, nl');
 @define('DATE_FORMAT_ENTRY', '%A, %e %B %Y');
@@ -1284,4 +1283,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_no.inc.php b/lang/UTF-8/serendipity_lang_no.inc.php
index 30bfef8e..ebf7c6c7 100644
--- a/lang/UTF-8/serendipity_lang_no.inc.php
+++ b/lang/UTF-8/serendipity_lang_no.inc.php
@@ -4,7 +4,6 @@
 # Translation (c) by Jo Christian Oterhals <oterhals@gmail.com>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'no_NO.UTF-8, no_NO.UTF8, norwegian, no, no_NO, no_');
 @define('DATE_FORMAT_ENTRY', '%A - %e. %B %Y');
@@ -1282,4 +1281,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_pl.inc.php b/lang/UTF-8/serendipity_lang_pl.inc.php
index bd3fb3e0..f8362743 100644
--- a/lang/UTF-8/serendipity_lang_pl.inc.php
+++ b/lang/UTF-8/serendipity_lang_pl.inc.php
@@ -5,7 +5,6 @@
 $i18n_filename_from = array(' ', 'a', 'A', 'ą', 'Ą', 'b', 'B', 'c', 'C', 'ć', 'Ć', 'd', 'D', 'e', 'E', 'ę', 'Ę', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'ł', 'Ł', 'm', 'M', 'n', 'N', 'ń', 'Ń', 'o', 'O', 'ó', 'Ó', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 'ś', 'Ś', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z', 'ź', 'Ź', 'ż', 'Ż');
 $i18n_filename_to   = array('_', 'a', 'A', 'a', 'A', 'b', 'B', 'c', 'C', 'c', 'C', 'd', 'D', 'e', 'E', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'l', 'L', 'm', 'M', 'n', 'N', 'n', 'N', 'o', 'O', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z', 'z', 'Z', 'z', 'Z');
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'pl.UTF-8, pl.UTF8, pl_PL.UTF-8, pl_PL.UTF8, olish, pl, pl_PL');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1283,4 +1282,4 @@ $i18n_filename_to   = array('_', 'a', 'A', 'a', 'A', 'b', 'B', 'c', 'C', 'c', 'C
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_pt.inc.php b/lang/UTF-8/serendipity_lang_pt.inc.php
index 35af05f6..5d40e39f 100644
--- a/lang/UTF-8/serendipity_lang_pt.inc.php
+++ b/lang/UTF-8/serendipity_lang_pt.inc.php
@@ -5,7 +5,6 @@
 # with an initial work of Ranulfo Netto <rcnetto@yahoo.com>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'pt_BR.UTF-8, pt_BR.UTF8, pt_BR, portuguese brazilian, pt');
 @define('DATE_FORMAT_ENTRY', '%A, %e de %B de %Y');
@@ -1283,4 +1282,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_pt_PT.inc.php b/lang/UTF-8/serendipity_lang_pt_PT.inc.php
index 7b356de7..091fd3ec 100644
--- a/lang/UTF-8/serendipity_lang_pt_PT.inc.php
+++ b/lang/UTF-8/serendipity_lang_pt_PT.inc.php
@@ -7,7 +7,6 @@
 # and even more work from Angel pticore@users.sourceforge.net
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'pt_PT.UTF-8, pt_PT.UTF8, pt, pt_PT, european portuguese');
 @define('DATE_FORMAT_ENTRY', '%A, %e de %B de %Y');
@@ -1285,4 +1284,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_ro.inc.php b/lang/UTF-8/serendipity_lang_ro.inc.php
index dfcebda1..7e142410 100644
--- a/lang/UTF-8/serendipity_lang_ro.inc.php
+++ b/lang/UTF-8/serendipity_lang_ro.inc.php
@@ -5,7 +5,6 @@
 # Translation by Alexandru Szasz <alexxed@gmail.com>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'ro_RO.UTF-8, romanian, ro, ro_RO');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1283,4 +1282,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_ru.inc.php b/lang/UTF-8/serendipity_lang_ru.inc.php
index 4fe6f02d..18f298b9 100644
--- a/lang/UTF-8/serendipity_lang_ru.inc.php
+++ b/lang/UTF-8/serendipity_lang_ru.inc.php
@@ -6,7 +6,6 @@
 $i18n_filename_from = array(' ', 'а', 'А', 'б', 'Б', 'в', 'В', 'г', 'Г', 'д', 'Д', 'е', 'Е', 'ё', 'Ё', 'Ж', 'ж', 'з', 'З', 'и', 'И', 'й', 'Й', 'к', 'К', 'л', 'Л', 'м', 'М', 'н', 'Н', 'о', 'О', 'п', 'П', 'р','Р', 'с', 'С', 'т', 'Т', 'у', 'У', 'ф', 'Ф', 'х', 'Х', 'ц', 'Ц', 'ч', 'Ч', 'ш', 'Ш', 'щ', 'Щ', 'ъ', 'Ъ', 'ы', 'Ы', 'ь', 'Ь', 'э', 'Э', 'ю', 'Ю', 'Я', 'я');
 $i18n_filename_to   = array('_', 'a', 'A', 'b', 'B', 'v', 'V', 'g', 'G', 'd', 'D', 'e', 'E', 'jo', 'Jo', 'zh', 'Zh', 'z', 'Z', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'f', 'F', 'h', 'H', 'c', 'C', 'ch', 'Ch', 'sh', 'Sh', 'w', 'W', '#', '#', 'y', 'Y', '’', '’', 'je', 'Je', 'ju', 'Ju', 'ja', 'Ja');
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'ru_RU.utf-8');
 @define('DATE_FORMAT_ENTRY', '%A, %e %B. %Y');
@@ -1284,4 +1283,4 @@ $i18n_filename_to   = array('_', 'a', 'A', 'b', 'B', 'v', 'V', 'g', 'G', 'd', 'D
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_sa.inc.php b/lang/UTF-8/serendipity_lang_sa.inc.php
index 9a6e60f7..6e51b1af 100644
--- a/lang/UTF-8/serendipity_lang_sa.inc.php
+++ b/lang/UTF-8/serendipity_lang_sa.inc.php
@@ -4,7 +4,6 @@
 # Arabic issue was translated by Way http://www.flyingway.com  UTF-8
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'Arabic,ar , ar_SA.windows-1256');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1282,4 +1281,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_se.inc.php b/lang/UTF-8/serendipity_lang_se.inc.php
index 66fe2d69..fb3834dd 100644
--- a/lang/UTF-8/serendipity_lang_se.inc.php
+++ b/lang/UTF-8/serendipity_lang_se.inc.php
@@ -4,7 +4,6 @@
 # Translation by Torbjörn Hedberg <torbjorn@sm.luth.se>
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'sv_SV.UTF8, sv_SV.UTF-8, swedish, sv, sv_SV, sv_SE.UTF8, sv_SE.UTF-8, sv_SE');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1282,4 +1281,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_sk.inc.php b/lang/UTF-8/serendipity_lang_sk.inc.php
index 142d18b4..559703fa 100644
--- a/lang/UTF-8/serendipity_lang_sk.inc.php
+++ b/lang/UTF-8/serendipity_lang_sk.inc.php
@@ -16,7 +16,6 @@ $i18n_filename_to = array (
 'A','C','D','E','E','I','L','L','N','O','O','R','R','S','S','T','U','U','Y','Z','Z',
 '-', '', '', '',
 );
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'sk_SK.UTF-8, sk_SK.UTF8, slovak, sk');
 @define('DATE_FORMAT_ENTRY', '%A, %e. %B %Y');
@@ -1294,4 +1293,4 @@ $i18n_filename_to = array (
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_ta.inc.php b/lang/UTF-8/serendipity_lang_ta.inc.php
index 74db2b9d..2bb16fdf 100644
--- a/lang/UTF-8/serendipity_lang_ta.inc.php
+++ b/lang/UTF-8/serendipity_lang_ta.inc.php
@@ -3,7 +3,6 @@
 # All rights reserved.  See LICENSE file for licensing details
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'ta_IN.UTF-8, en.UTF-8, en_US.UTF-8, english, en, en_US');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1281,4 +1280,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_tn.inc.php b/lang/UTF-8/serendipity_lang_tn.inc.php
index 32a2e3a2..8ab753fe 100644
--- a/lang/UTF-8/serendipity_lang_tn.inc.php
+++ b/lang/UTF-8/serendipity_lang_tn.inc.php
@@ -6,7 +6,6 @@
 /* vim: set sts=4 ts=4 expandtab : */
 $i18n_unknown = 'tw';
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'zh-TW.UTF-8, zh_TW.UTF-8, tw, zh');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1284,4 +1283,4 @@ $i18n_unknown = 'tw';
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_tr.inc.php b/lang/UTF-8/serendipity_lang_tr.inc.php
index 077fe07a..2b869bea 100644
--- a/lang/UTF-8/serendipity_lang_tr.inc.php
+++ b/lang/UTF-8/serendipity_lang_tr.inc.php
@@ -5,7 +5,6 @@
 
 /* jedit: php,indent,utf-8, unix : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'tr_TR.UTF-8, tr.UTF-8, turkish.UTF-8, turkish, tr, tr_TR');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1283,4 +1282,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_tw.inc.php b/lang/UTF-8/serendipity_lang_tw.inc.php
index 646e9095..1cf6549d 100644
--- a/lang/UTF-8/serendipity_lang_tw.inc.php
+++ b/lang/UTF-8/serendipity_lang_tw.inc.php
@@ -6,7 +6,6 @@
 /* vim: set sts=4 ts=4 expandtab : */
 $i18n_unknown = 'tw';
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'tw, zh, zh-TW, zh_TW');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1284,4 +1283,4 @@ $i18n_unknown = 'tw';
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lang/UTF-8/serendipity_lang_zh.inc.php b/lang/UTF-8/serendipity_lang_zh.inc.php
index 0d995103..6e65e9ed 100644
--- a/lang/UTF-8/serendipity_lang_zh.inc.php
+++ b/lang/UTF-8/serendipity_lang_zh.inc.php
@@ -6,7 +6,6 @@
 #          http://www.cexten.com  
 /* vim: set sts=4 ts=4 expandtab : */
 
-@define('LANG_CHARSET', 'UTF-8');
 @define('SQL_CHARSET', 'utf8');
 @define('DATE_LOCALES', 'zh_CN.UTF-8, cn, zh, zh_GB, zh_CN');
 @define('DATE_FORMAT_ENTRY', '%A, %B %e. %Y');
@@ -1284,4 +1283,4 @@
 @define('PLUGIN_GROUP_ALL', 'All categories');
 @define('PENDING_COMMENT_SUBSCRIPTION', 'Pending confirmation');
 @define('NO_COMMENT_SUBSCRIPTION', 'Not subscribed');
-@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
\ No newline at end of file
+@define('NOTIFICATION_CONFIRM_SUBMAIL_FAIL', 'Sorry, the confirmation of your subscription to new comments has failed.');
diff --git a/lib/LuckyCoin/Database/MysqliDatabase.php b/lib/LuckyCoin/Database/MysqliDatabase.php
index fe8c1c66..f6d07ddf 100644
--- a/lib/LuckyCoin/Database/MysqliDatabase.php
+++ b/lib/LuckyCoin/Database/MysqliDatabase.php
@@ -288,19 +288,12 @@ class MysqliDatabase extends DbAbstract
             'unsigned'  , 'FULLTEXT', 'FULLTEXT', 'enum (\'true\', \'false\') NOT NULL default \'true\'', 'LONGTEXT');
 
         $search[] = '{UTF_8}';
-        if (  $_POST['charset'] == 'UTF-8/' ||
-              $this->serendipity['charset'] == 'UTF-8/' ||
-              $this->serendipity['POST']['charset'] == 'UTF-8/' ||
-              LANG_CHARSET == 'UTF-8' ) {
-            if ($this->isUtf8mb4Ready()) {
-                $replace[] = 'ROW_FORMAT=DYNAMIC /*!40100 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */';
-            } else {
-                # in old versions we stick to the three byte pseudo utf8 to not trip
-                # over the max index restriction of 1000 bytes
-                $replace[] = '/*!40100 CHARACTER SET utf8 COLLATE utf8_unicode_ci */';
-            }
+        if ($this->isUtf8mb4Ready()) {
+            $replace[] = 'ROW_FORMAT=DYNAMIC /*!40100 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */';
         } else {
-            $replace[] = '';
+            # in old versions we stick to the three byte pseudo utf8 to not trip
+            # over the max index restriction of 1000 bytes
+            $replace[] = '/*!40100 CHARACTER SET utf8 COLLATE utf8_unicode_ci */';
         }
 
         if ($this->isUtf8mb4Ready()) {
diff --git a/lib/LuckyCoin/Routing.php b/lib/LuckyCoin/Routing.php
index 48510257..3f8d04b3 100644
--- a/lib/LuckyCoin/Routing.php
+++ b/lib/LuckyCoin/Routing.php
@@ -156,7 +156,7 @@ class Routing
             header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 3600));
         }
 
-        header('Content-type: application/javascript; charset=' . LANG_CHARSET);
+        header('Content-type: application/javascript; charset=utf-8');
 
         $out = "";
         // FIXFIX: including genpage without any given action will generate the
diff --git a/plugins/serendipity_event_gravatar/serendipity_event_gravatar.php b/plugins/serendipity_event_gravatar/serendipity_event_gravatar.php
index 9d21882a..8c281bc9 100644
--- a/plugins/serendipity_event_gravatar/serendipity_event_gravatar.php
+++ b/plugins/serendipity_event_gravatar/serendipity_event_gravatar.php
@@ -487,7 +487,7 @@ class serendipity_event_gravatar extends serendipity_event
         $title = '';
         $author = 'unknown';
         if (isset($eventData['author'])) {
-            $author = (function_exists('serendipity_specialchars') ? serendipity_specialchars($eventData['author']) : htmlspecialchars($eventData['author'], ENT_COMPAT, LANG_CHARSET));
+            $author = (function_exists('serendipity_specialchars') ? serendipity_specialchars($eventData['author']) : htmlspecialchars($eventData['author'], ENT_COMPAT, 'UTF-8'));
             $title = $author;
         }
 
@@ -792,7 +792,7 @@ class serendipity_event_gravatar extends serendipity_event
                                           ($mode=='F' && preg_match('/<link[^>]+rel="(?:shortcut )?icon"[^>]+?href="([^"]+?)"/si', $fContent, $matches)))
                 {
                     // Attempt to grab an avatar link from their webpage url
-                    $linkUrl = (function_exists('serendipity_entity_decode') ? serendipity_entity_decode($matches[1]) : html_entity_decode($matches[1], ENT_COMPAT, LANG_CHARSET));
+                    $linkUrl = (function_exists('serendipity_entity_decode') ? serendipity_entity_decode($matches[1]) : html_entity_decode($matches[1], ENT_COMPAT, 'UTF-8'));
                     if (substr($linkUrl, 0, 1) == '/') {
                         if ($urlParts = parse_url($url)) {
                             $faviconURL = $urlParts['scheme'] . '://' . $urlParts['host'] . $linkUrl;
@@ -1459,4 +1459,4 @@ class serendipity_event_gravatar extends serendipity_event
 }
 
 /* vim: set sts=4 ts=4 expandtab : */
-?>
\ No newline at end of file
+?>
diff --git a/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php b/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php
index df15accb..94f2e54a 100644
--- a/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php
+++ b/plugins/serendipity_event_spartacus/serendipity_event_spartacus.php
@@ -549,7 +549,7 @@ class serendipity_event_spartacus extends serendipity_event
                 }
 
                 if ($decode_utf8) {
-                    $data = str_replace('<?xml version="1.0" encoding="UTF-8" ?>', '<?xml version="1.0" encoding="' . LANG_CHARSET . '" ?>', $data);
+                    $data = str_replace('<?xml version="1.0" encoding="UTF-8" ?>', '<?xml version="1.0" encoding="utf-8" ?>', $data);
                     $this->decode($data, true);
                 }
 
@@ -569,27 +569,9 @@ class serendipity_event_spartacus extends serendipity_event
     function decode(&$data, $force = false)
     {
         // xml_parser_* functions to recoding from ISO-8859-1/UTF-8
-        if ($force === false && (LANG_CHARSET == 'ISO-8859-1' || LANG_CHARSET == 'UTF-8')) {
+        if ($force === false) {
             return true;
         }
-
-        switch (strtolower(LANG_CHARSET)) {
-            case 'utf-8':
-                // The XML file is UTF-8 format. No changes needed.
-                break;
-
-            case 'iso-8859-1':
-                $data = utf8_decode($data);
-                break;
-
-            default:
-                if (function_exists('iconv')) {
-                    $data = iconv('UTF-8', LANG_CHARSET, $data);
-                } elseif (function_exists('recode')) {
-                    $data = recode('utf-8..' . LANG_CHARSET, $data);
-                }
-                break;
-        }
     }
 
     function &fetchOnline($type, $no_cache = false)
diff --git a/plugins/serendipity_event_xhtmlcleanup/serendipity_event_xhtmlcleanup.php b/plugins/serendipity_event_xhtmlcleanup/serendipity_event_xhtmlcleanup.php
index 650cf1c6..524f2855 100644
--- a/plugins/serendipity_event_xhtmlcleanup/serendipity_event_xhtmlcleanup.php
+++ b/plugins/serendipity_event_xhtmlcleanup/serendipity_event_xhtmlcleanup.php
@@ -226,15 +226,7 @@ class serendipity_event_xhtmlcleanup extends serendipity_event
         $val      = &$this->cleanup_val;
 
         // Instead of nasty regex-mangling we use the XML parser to get the attribute list of our input tag
-        switch(strtolower(LANG_CHARSET)) {
-            case 'iso-8859-1':
-            case 'utf-8':
-                $p = xml_parser_create(LANG_CHARSET);
-                break;
-
-            default:
-                $p = xml_parser_create('');
-        }
+        $p = xml_parser_create('UTF-8');
 
         @xml_parse_into_struct($p, $data[0], $vals, $index);
         xml_parser_free($p);
@@ -270,4 +262,4 @@ class serendipity_event_xhtmlcleanup extends serendipity_event
 }
 
 /* vim: set sts=4 ts=4 expandtab : */
-?>
\ No newline at end of file
+?>
diff --git a/plugins/serendipity_plugin_comments/serendipity_plugin_comments.php b/plugins/serendipity_plugin_comments/serendipity_plugin_comments.php
index d45a9613..57a77a1d 100644
--- a/plugins/serendipity_plugin_comments/serendipity_plugin_comments.php
+++ b/plugins/serendipity_plugin_comments/serendipity_plugin_comments.php
@@ -204,7 +204,7 @@ class serendipity_plugin_comments extends serendipity_plugin
                 }
                 # truncate comment to $max_chars
                 if (function_exists('mb_strimwidth')) {
-                    $comment = mb_strimwidth($comment, 0, $max_chars, " [...]", LANG_CHARSET);
+                    $comment = mb_strimwidth($comment, 0, $max_chars, " [...]", 'UTF-8');
                 } else {
                     $comments = wordwrap($comment, $max_chars, '@@@', 1);
                     $aComment = explode('@@@', $comments);
@@ -242,22 +242,21 @@ class serendipity_plugin_comments extends serendipity_plugin
                 if (function_exists('mb_strimwidth') && function_exists('mb_strrpos') && function_exists('mb_substr')) {
                     $pos = 0;
                     $parts = array();
-                    $enc = LANG_CHARSET;
-                    $comment_len = mb_strlen($comment, $enc);
+                    $comment_len = mb_strlen($comment);
                     # iterate over the (truncated) comment and wrap each line at $wordwrap
                     while ($pos < $comment_len) {
                         # do we still need to wrap this line or is it shorter than $wordwrap?
                         if ($comment_len - $pos > $wordwrap) {
                             # location of first space
-                            $spacepos = mb_strrpos(mb_substr($comment, $pos, $wordwrap, $enc), ' ', $enc);
+                            $spacepos = mb_strrpos(mb_substr($comment, $pos, $wordwrap), ' ');
                             # wrap at word boundary if we have at least one space
-                            $part = ( $spacepos > 0 ) ? mb_substr($comment, $pos, $spacepos, $enc) : mb_strimwidth($comment, $pos, $wordwrap, '', $enc);;
+                            $part = ( $spacepos > 0 ) ? mb_substr($comment, $pos, $spacepos) : mb_strimwidth($comment, $pos, $wordwrap, '');;
                         } else {
                             # wrap "hard", i.e. truncate words that are too long
-                            $part = mb_substr($comment, $pos, $wordwrap, $enc);
+                            $part = mb_substr($comment, $pos, $wordwrap);
                         }
                         # forward the pointer
-                        $pos += mb_strlen($part, $enc);
+                        $pos += mb_strlen($part);
                         # remove leading spaces
                         $part = ltrim($part);
                         # re-assemble the lines, i.e. add our current line
@@ -298,4 +297,4 @@ class serendipity_plugin_comments extends serendipity_plugin
 }
 
 /* vim: set sts=4 ts=4 expandtab : */
-?>
\ No newline at end of file
+?>
diff --git a/plugins/serendipity_plugin_remoterss/serendipity_plugin_remoterss.php b/plugins/serendipity_plugin_remoterss/serendipity_plugin_remoterss.php
index d6886b20..73b8b5c9 100644
--- a/plugins/serendipity_plugin_remoterss/serendipity_plugin_remoterss.php
+++ b/plugins/serendipity_plugin_remoterss/serendipity_plugin_remoterss.php
@@ -90,7 +90,7 @@ class s9y_remoterss_XMLTree
         $p = xml_parser_create($encoding);
         // by: anony@mous.com - meets XML 1.0 specification
         @xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, 0);
-        xml_parser_set_option($p, XML_OPTION_TARGET_ENCODING, LANG_CHARSET);
+        xml_parser_set_option($p, XML_OPTION_TARGET_ENCODING, 'UTF-8');
         xml_parse_into_struct($p, $data, $vals, $index);
         xml_parser_free($p);
 
@@ -349,15 +349,8 @@ class serendipity_plugin_remoterss extends serendipity_plugin
                 $propbag->add('default',        'native');
 
                 $charsets = array();
-                if (LANG_CHARSET != 'UTF-8') {
-                    $charsets['value'][] = $charsets['desc'][] = 'UTF-8';
-                }
-                if (LANG_CHARSET != 'ISO-8859-1') {
-                    $charsets['value'][] = $charsets['desc'][] = 'ISO-8859-1';
-                }
-
                 $charsets['value'][] = 'native';
-                $charsets['desc'][]  = LANG_CHARSET;
+                $charsets['desc'][]  = 'UTF-8';
                 $propbag->add('radio',          $charsets);
                 break;
 
@@ -882,36 +875,10 @@ class serendipity_plugin_remoterss extends serendipity_plugin
 
     function &decode($string)
     {
-        $target = $this->get_config('charset', 'native');
-
-        // xml_parser_* functions to recoding from ISO-8859-1/UTF-8
-        if (LANG_CHARSET == 'ISO-8859-1' || LANG_CHARSET == 'UTF-8') {
-            return $string;
-        }
-
-        switch($target) {
-            case 'native':
-                return $string;
-
-            case 'ISO-8859-1':
-                if (function_exists('iconv')) {
-                    $out = iconv('ISO-8859-1', LANG_CHARSET, $string);
-                } elseif (function_exists('recode')) {
-                    $out = recode('iso-8859-1..' . LANG_CHARSET, $string);
-                } else {
-                    return $string;
-                }
-
-                return $out;
-
-            case 'UTF-8':
-            default:
-                $out = utf8_decode($string);
-                return $out;
-        }
+        return $string;
     }
 
 }
 
 /* vim: set sts=4 ts=4 expandtab : */
-?>
\ No newline at end of file
+?>
diff --git a/serendipity.css.php b/serendipity.css.php
index 691474d4..f15ad0f2 100644
--- a/serendipity.css.php
+++ b/serendipity.css.php
@@ -62,7 +62,7 @@ if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
     header('Pragma:');
     header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time()+3600));
 }
-header('Content-type: text/css; charset=' . LANG_CHARSET);
+header('Content-type: text/css; charset=utf-8');
 
 if (IS_installed === false) {
     if (file_exists(S9Y_INCLUDE_PATH . 'templates/' . $serendipity['defaultTemplate'] . '/' . $css_file)) {
diff --git a/serendipity_admin.php b/serendipity_admin.php
index 69e9ce9b..51ef8fd6 100644
--- a/serendipity_admin.php
+++ b/serendipity_admin.php
@@ -13,7 +13,7 @@ define('IN_serendipity', true);
 define('IN_serendipity_admin', true);
 include('serendipity_config.inc.php');
 
-header('Content-Type: text/html; charset=' . LANG_CHARSET);
+header('Content-Type: text/html; charset=utf-8');
 
 if (IS_installed === false) {
     require_once(S9Y_INCLUDE_PATH . 'include/functions.inc.php');
diff --git a/serendipity_admin_image_selector.php b/serendipity_admin_image_selector.php
index 10cd267a..58892394 100644
--- a/serendipity_admin_image_selector.php
+++ b/serendipity_admin_image_selector.php
@@ -8,7 +8,7 @@ if (IN_serendipity !== true) {
     die ("Don't hack!");
 }
 
-header('Content-Type: text/html; charset=' . LANG_CHARSET);
+header('Content-Type: text/html; charset=utf-8');
 
 if ($_SESSION['serendipityAuthedUser'] !== true && $serendipity['GET']['step'] != 'showItem')  {
     die(HAVE_TO_BE_LOGGED_ON);
diff --git a/serendipity_config.inc.php b/serendipity_config.inc.php
index 488db7db..afac3ab1 100644
--- a/serendipity_config.inc.php
+++ b/serendipity_config.inc.php
@@ -429,9 +429,6 @@ if (function_exists('date_default_timezone_set')) {
     }
 }
 
-// Fallback charset, if none is defined in the language files
-defined('LANG_CHARSET') or @define('LANG_CHARSET', 'ISO-8859-1');
-
 // Create array of permission levels, with descriptions
 $serendipity['permissionLevels'] = array(USERLEVEL_EDITOR => USERLEVEL_EDITOR_DESC,
                                          USERLEVEL_CHIEF => USERLEVEL_CHIEF_DESC,
diff --git a/templates/2k11/admin/index.tpl b/templates/2k11/admin/index.tpl
index 55a2915e..0330466a 100644
--- a/templates/2k11/admin/index.tpl
+++ b/templates/2k11/admin/index.tpl
@@ -2,7 +2,7 @@
 <!--[if IE 8]>    <html class="no-js lt-ie9" lang="{$lang}"> <![endif]-->
 <!--[if gt IE 8]><!--> <html class="no-js" dir="{$CONST.LANG_DIRECTION}" lang="{$lang}"> <!--<![endif]-->
 <head>
-    <meta charset="{$CONST.LANG_CHARSET}">
+    <meta charset="utf-8">
     {if !$admin_vars.backendBlogtitleFirst}
         <title>{if $admin_vars.title}{$admin_vars.title} | {/if}{$blogTitle} | {$CONST.SERENDIPITY_ADMIN_SUITE}</title>
     {else}
@@ -195,4 +195,4 @@
 {if $admin_vars.admin_installed}{serendipity_hookPlugin hook="backend_footer" hookAll="true"}{/if}
 
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/templates/2k11/admin/installer.inc.tpl b/templates/2k11/admin/installer.inc.tpl
index e4193608..57ea33e6 100644
--- a/templates/2k11/admin/installer.inc.tpl
+++ b/templates/2k11/admin/installer.inc.tpl
@@ -2,7 +2,7 @@
 <!--[if IE 8]>    <html class="no-js lt-ie9" lang="{$lang}"> <![endif]-->
 <!--[if gt IE 8]><!--> <html class="no-js" lang="{$lang}"> <!--<![endif]-->
 <head>
-    <meta charset="{$CONST.LANG_CHARSET}">
+    <meta charset="utf-8">
     <title>{$CONST.SERENDIPITY_ADMIN_SUITE}</title>
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="stylesheet" href="{serendipity_getFile file='admin/style.css'}">
diff --git a/templates/2k11/admin/upgrader.inc.tpl b/templates/2k11/admin/upgrader.inc.tpl
index 8b616f0e..c21518a6 100644
--- a/templates/2k11/admin/upgrader.inc.tpl
+++ b/templates/2k11/admin/upgrader.inc.tpl
@@ -2,7 +2,7 @@
 <!--[if IE 8]>    <html class="no-js lt-ie9" lang="{$lang}"> <![endif]-->
 <!--[if gt IE 8]><!--> <html class="no-js" lang="{$lang}"> <!--<![endif]-->
 <head>
-    <meta charset="{$CONST.LANG_CHARSET}">
+    <meta charset="utf-8">
     <title>{if $admin_vars.title}{$admin_vars.title} | {/if}{$CONST.SERENDIPITY_ADMIN_SUITE}</title>
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="stylesheet" href="{$head_link_stylesheet}">
@@ -175,4 +175,4 @@
     {/if}
 {/if}
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/templates/clean-blog/config.inc.php b/templates/clean-blog/config.inc.php
index 647dbb14..f959f665 100644
--- a/templates/clean-blog/config.inc.php
+++ b/templates/clean-blog/config.inc.php
@@ -272,7 +272,7 @@ function serendipity_plugin_api_pre_event_hook($event, &$bag, &$eventData, &$add
             $entry_specific_header_image_key = 'entry_specific_header_image';
 
             // Check what our special key is set to (checks both POST data as well as the actual data)
-            $is_entry_subtitle = (function_exists('serendipity_specialchars') ? serendipity_specialchars(entry_option_get_value($entry_subtitle_key, $eventData)) : htmlspecialchars(entry_option_get_value($entry_subtitle_key, $eventData), ENT_COMPAT, LANG_CHARSET));
+            $is_entry_subtitle = (function_exists('serendipity_specialchars') ? serendipity_specialchars(entry_option_get_value($entry_subtitle_key, $eventData)) : htmlspecialchars(entry_option_get_value($entry_subtitle_key, $eventData), ENT_COMPAT, 'UTF-8'));
             $is_entry_specific_header_image = entry_option_get_value ($entry_specific_header_image_key, $eventData);
 
             // This is the actual HTML output on the backend screen.
diff --git a/templates/default/admin/index.tpl b/templates/default/admin/index.tpl
index 34823178..3c6f773f 100644
--- a/templates/default/admin/index.tpl
+++ b/templates/default/admin/index.tpl
@@ -2,7 +2,7 @@
     <head>
 <!-- ADMIN-ENTRY TEMPLATE: index.tpl START -->
         <title>{$admin_vars.title} - {$CONST.SERENDIPITY_ADMIN_SUITE}</title>
-        <meta http-equiv="Content-Type" content="text/html; charset={$CONST.LANG_CHARSET}" />
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
         <link rel="stylesheet" type="text/css" href="{$admin_vars.css_file}" />
         <link rel="stylesheet" type="text/css" href="{$admin_vars.admin_css_file}" />
         <script src="{serendipity_getFile file='admin/header_spawn.js'}"></script>
diff --git a/templates/default/admin/media_choose.tpl b/templates/default/admin/media_choose.tpl
index 33c0d46b..87523c1f 100644
--- a/templates/default/admin/media_choose.tpl
+++ b/templates/default/admin/media_choose.tpl
@@ -1,7 +1,7 @@
 <html>
     <head>
         <title>{$CONST.SERENDIPITY_ADMIN_SUITE}: {$CONST.SELECT_FILE}</title>
-        <meta http-equiv="Content-Type" content="text/html; charset={$CONST.LANG_CHARSET}" />
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
         {if $media.css}<link rel="stylesheet" type="text/css" href="{$media.css}" />{/if}
         {if $media.css_tree}<link rel="stylesheet" type="text/css" href="{$media.css_tree}" />{/if}
         {if $media.css_imgedit}<link rel="stylesheet" type="text/css" href="{$media.css_imgedit}" />{/if}