[CLEANUP][CONF!!!] Remove forceCharset option and references
authorSteffen Ritter <info@rs-websystems.de>
Sun, 19 Feb 2012 11:05:42 +0000 (12:05 +0100)
committerSteffen Ritter <info@rs-websystems.de>
Sun, 26 Feb 2012 19:33:41 +0000 (20:33 +0100)
In TYPO3 4.5 the forceCharset and setDBinit options have been
deprecated. "forceCharset" was set to be removed in 4.7.

This ChangeSet removes the config option from the install tool
and all references within core to this variable.

If behaviour had been in question, the code has been adapted
to behave like the variable had been set to utf-8 and therefore
like the behaviour had been since 4.5.

Change-Id: Ic8fa9385b59eb127271c4f1a0902bbe8f3ee5499
Resolves: #34092
Releases: 4.7
Reviewed-on: http://review.typo3.org/9099
Reviewed-by: Michael Stucki
Tested-by: Michael Stucki
16 files changed:
t3lib/class.t3lib_basicfilefunc.php
t3lib/class.t3lib_div.php
t3lib/class.t3lib_stdgraphic.php
t3lib/config_default.php
t3lib/l10n/parser/class.t3lib_l10n_parser_abstractxml.php
t3lib/l10n/parser/class.t3lib_l10n_parser_llphp.php
typo3/classes/class.typo3ajax.php
typo3/sysext/cms/tslib/class.tslib_fe.php
typo3/sysext/cms/tslib/class.tslib_pibase.php
typo3/sysext/em/classes/tools/class.tx_em_tools_xmlhandler.php
typo3/sysext/install/mod/class.tx_install.php
typo3/sysext/install/updates/class.tx_coreupdates_charsetdefaults.php
typo3/sysext/lang/lang.php
typo3/sysext/rtehtmlarea/class.tx_rtehtmlarea_base.php
typo3/sysext/rtehtmlarea/extensions/Acronym/class.tx_rtehtmlarea_acronym.php
typo3/sysext/t3editor/res/tsref/tsref.xml

index 507d09e..07cf342 100644 (file)
@@ -419,7 +419,7 @@ class t3lib_basicFileFunctions {
         */
        function cleanFileName($fileName, $charset = '') {
                        // Handle UTF-8 characters
-               if ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] == 'utf-8' && $GLOBALS['TYPO3_CONF_VARS']['SYS']['UTF8filesystem']) {
+               if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['UTF8filesystem']) {
                                // allow ".", "-", 0-9, a-z, A-Z and everything beyond U+C0 (latin capital letter a with grave)
                        $cleanFileName = preg_replace('/[\x00-\x2C\/\x3A-\x3F\x5B-\x60\x7B-\xBF]/u', '_', trim($fileName));
 
@@ -443,7 +443,7 @@ class t3lib_basicFileFunctions {
                                } elseif (is_object($GLOBALS['LANG'])) { // BE assumed:
                                        $charset = $GLOBALS['LANG']->charSet;
                                } else { // best guess
-                                       $charset = $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'];
+                                       $charset = 'utf-8';
                                }
                        }
 
index 7af6443..86186d8 100644 (file)
@@ -2187,16 +2187,8 @@ final class t3lib_div {
         */
        public static function array2xml_cs(array $array, $docTag = 'phparray', array $options = array(), $charset = '') {
 
-                       // Figure out charset if not given explicitly:
-               if (!$charset) {
-                       if ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']) { // First priority: forceCharset! If set, this will be authoritative!
-                               $charset = $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'];
-                       } elseif (is_object($GLOBALS['LANG'])) {
-                               $charset = $GLOBALS['LANG']->charSet; // If "LANG" is around, that will hold the current charset
-                       } else {
-                               $charset = 'iso-8859-1'; // THIS is just a hopeful guess!
-                       }
-               }
+                       // Set default charset unless explicitly specified
+               $charset = $charset ? $charset : 'utf-8';
 
                        // Return XML:
                return '<?xml version="1.0" encoding="' . htmlspecialchars($charset) . '" standalone="yes" ?>' . LF .
@@ -2395,7 +2387,7 @@ final class t3lib_div {
                        // default output charset is UTF-8, only ASCII, ISO-8859-1 and UTF-8 are supported!!!
                $match = array();
                preg_match('/^[[:space:]]*<\?xml[^>]*encoding[[:space:]]*=[[:space:]]*"([^"]*)"/', substr($string, 0, 200), $match);
-               $theCharset = $match[1] ? $match[1] : ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] ? $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] : 'iso-8859-1');
+               $theCharset = $match[1] ? $match[1] : 'utf-8';
                xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $theCharset); // us-ascii / utf-8 / iso-8859-1
 
                        // Parse content:
@@ -4200,11 +4192,8 @@ final class t3lib_div {
                        $sourceCharset = $csConvObj->parse_charset($csConvObj->charSetArray[$langKey] ? $csConvObj->charSetArray[$langKey] : 'iso-8859-1');
                        if ($charset) {
                                $targetCharset = $csConvObj->parse_charset($charset);
-                       } elseif ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']) {
-                                       // when forceCharset is set, we store ALL labels in this charset!!!
-                               $targetCharset = $csConvObj->parse_charset($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']);
                        } else {
-                               $targetCharset = $csConvObj->parse_charset($csConvObj->charSetArray[$langKey] ? $csConvObj->charSetArray[$langKey] : 'iso-8859-1');
+                               $targetCharset = 'utf-8';
                        }
 
                                // Cache file name:
@@ -4287,11 +4276,8 @@ final class t3lib_div {
                                // Set charset:
                        if ($charset) {
                                $targetCharset = $csConvObj->parse_charset($charset);
-                       } elseif ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']) {
-                                       // when forceCharset is set, we store ALL labels in this charset!!!
-                               $targetCharset = $csConvObj->parse_charset($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']);
                        } else {
-                               $targetCharset = $csConvObj->parse_charset($csConvObj->charSetArray[$langKey] ? $csConvObj->charSetArray[$langKey] : 'iso-8859-1');
+                               $targetCharset = 'utf-8';
                        }
 
                                // Cache file name:
@@ -5076,7 +5062,7 @@ final class t3lib_div {
        /**
         * Simple substitute for the PHP function mail() which allows you to specify encoding and character set
         * The fifth parameter ($encoding) will allow you to specify 'base64' encryption for the output (set $encoding=base64)
-        * Further the output has the charset set to ISO-8859-1 by default.
+        * Further the output has the charset set to UTF-8 by default.
         *
         * @param string $email Email address to send to. (see PHP function mail())
         * @param string $subject Subject line, non-encoded. (see PHP function mail())
@@ -5089,7 +5075,7 @@ final class t3lib_div {
         */
        public static function plainMailEncoded($email, $subject, $message, $headers = '', $encoding = 'quoted-printable', $charset = '', $dontEncodeHeader = FALSE) {
                if (!$charset) {
-                       $charset = $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] ? $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] : 'ISO-8859-1';
+                       $charset = 'utf-8';
                }
 
                $email = self::normalizeMailAddress($email);
index e3d1db2..cc8392b 100644 (file)
@@ -224,7 +224,7 @@ class t3lib_stdGraphic {
                } else { // The object may not exist yet, so we need to create it now. Happens in the Install Tool for example.
                        $this->csConvObj = t3lib_div::makeInstance('t3lib_cs');
                }
-               $this->nativeCharset = $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'];
+               $this->nativeCharset = 'utf-8';
        }
 
 
index 7163be2..f415650 100644 (file)
@@ -115,7 +115,7 @@ $TYPO3_CONF_VARS = array(
                'systemLogLevel' => 0,                                  // <p>Integer (0, 1, 2, 3, 4): Only messages with same or higher severity are logged.</p><ul><li>0: info</li><li>1: notice</li><li>2: warning</li><li>3: error</li><li>4: fatal error</li></ul>
                'enableDeprecationLog' => 'file',               // Commalist: Enables the logging of deprecated methods and functions. Default is 'file'. The following options are allowed: <dl><dt>file</dt><dd>The log file will be written to typo3conf/deprecation_[hash-value].log</dd><dt>devlog</dt><dd>The log will be written to the development log</dd><dt>console<dt><dd>The log will be displayed in the Backend's Debug Console. The logging options can be combined by comma-separating them.</dd></dl>
                'maxFileNameLength' => 60,                              // Integer: This is the maximum file name length. The value will be taken into account by basic file operations like renaming or creation of files and folders.
-               'UTF8filesystem' => FALSE,                              // Boolean: If TRUE and <a href="#BE-forceCharset">[BE][forceCharset]</a> is set to utf-8, then TYPO3 uses utf-8 to store file names. This allows for accented Latin letters as well as any other non-latin characters like Cyrillic and Chinese.
+               'UTF8filesystem' => FALSE,                              // Boolean: If TRUE then TYPO3 uses utf-8 to store file names. This allows for accented Latin letters as well as any other non-latin characters like Cyrillic and Chinese.
                'systemLocale' => '',                                   // String: locale used for certain system related functions, e.g. escaping shell commands. If problems with filenames containing special characters occur, the value of this option is probably wrong. See <a href="http://php.net/manual/en/function.setlocale.php" target="_blank">setlocale()</a>.
                'lockingMode' => 'simple',                                      // String: Define which locking mode is used to control requests to pages being generated. Can be one of either "disable" (no locking), "simple" (checks for file existance), "flock" (using PHPs <a href="http://php.net/flock" target="_blank">flock()</a> function), "semaphore" (using PHPs <a href="http://php.net/sem-acquire" target="_blank">sem_acquire()</a> function). Default is "disable".
                'reverseProxyIP' => '',                                 // String: list of IP addresses. If TYPO3 is behind one or more (intransparent) reverese proxies the IP addresses must be added here.
@@ -226,7 +226,6 @@ $TYPO3_CONF_VARS = array(
                'usePHPFileFunctions' => TRUE,                  // Boolean: If set, all fileoperations are done by the default PHP-functions. Default on Unix is using the system commands by exec().
                'compressionLevel' => 0,                                // Determines output compression of BE output. Makes output smaller but slows down the page generation depending on the compression level. Requires a) zlib in your PHP installation and b) special rewrite rules for .css.gzip and .js.gzip (please see _.htacces for an example). Range 1-9, where 1 is least compression and 9 is greatest compression. 'true' as value will set the compression based on the PHP default settings (usually 5). Suggested and most optimal value is 5.
                'maxFileSize' => '10240',                               // Integer: If set this is the max filesize in KB's for file operations in the backend. Can be overridden through $TCA per table field separately.
-               'forceCharset' => '-1',                                 // String: Normally the charset of the backend users language selection is used. If you set this value to a charset found in t3lib/csconvtbl/ (or "utf-8") the backend (and database) will ALWAYS use this charset. Always use a lowercase value. NOTICE: This option is deprecated since TYPO3 4.5, and will be removed in 4.7. Please use proper tools to set your installation to native UTF-8.
                'installToolPassword' => '',                    // String: This is the md5-hashed password for the Install Tool. Set this to '' and access will be totally denied. PLEASE consider to externally password protect the typo3/install/ folder, eg. with a .htaccess file.
                'pageTree' => array(
                        'preloadLimit' => 50,                           // Integer: Count of pages that will be preloaded in pagetree. Big amount makes collapsing new branches faster but requires more SQL queries.
@@ -786,58 +785,37 @@ t3lib_autoloader::registerAutoloader();
  * Checking for UTF-8 in the settings since TYPO3 4.5
  *
  * Since TYPO3 4.5, everything other than UTF-8 is deprecated.
- * The -1 operator is used to see if the option was set in the installations localconf.php.
  *
  *   [BE][forceCharset] is set to the charset that TYPO3 is using
  *   [SYS][setDBinit] is used to set the DB connection
  * and both settings need to be adjusted for UTF-8 in order to work properly
  */
-       // If this value is -1 then the setting has not been modified in localconf.php
-if ($TYPO3_CONF_VARS['BE']['forceCharset'] == '-1' && $typo_db) {
-       if (t3lib_div::compat_version('4.5')) {
-                       // 1) no option was set in localconf.php but the Update Wizard
-                       //    was already used, so the admin is knowing what he's doing,
-                       // 2) a new installation with the new default value
-               $TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
-       } elseif (TYPO3_enterInstallScript !== '1') {
-                       // The value needs to be set in localconf.php
-               die('This installation was just upgraded to TYPO3 ' . TYPO3_branch . '. In this version, some default settings have changed.<br />' .
-                       'You can continue to use your settings by specifying the former default values in localconf.php.<br />' .
-                       'Please proceed to the Update Wizard in the TYPO3 Install Tool to update your configuration.');
+       // Check if [BE][forceCharset] has been set in localconf.php
+if (isset($TYPO3_CONF_VARS['BE']['forceCharset'])) {
+               // die() unless we're already on UTF-8
+       if ($TYPO3_CONF_VARS['BE']['forceCharset'] != 'utf-8' && $TYPO3_CONF_VARS['BE']['forceCharset'] && TYPO3_enterInstallScript !== '1') {
+               die('This installation was just upgraded to a new TYPO3 version. Since TYPO3 4.7, utf-8 is always enforced.<br />' .
+                       'The configuration option $TYPO3_CONF_VARS[BE][forceCharset] was marked as deprecated in TYPO3 4.5 and is now ignored.<br />' .
+                       'You have configured the value to something different, which is not supported anymore.<br />' .
+                       'Please proceed to the Update Wizard in the TYPO3 Install Tool to update your configuration.'
+               );
+       } else {
+               unset($TYPO3_CONF_VARS['BE']['forceCharset']);
        }
-
-} elseif ($TYPO3_CONF_VARS['BE']['forceCharset'] !== 'utf-8' && $typo_db) {
-       t3lib_div::deprecationLog('This TYPO3 installation does not enforce the UTF-8 character set.' . chr(10) .
-               'Everything other than UTF-8 is deprecated since TYPO3 4.5.' . chr(10) .
-               'The DB, its connection and TYPO3 should be migrated to UTF-8 therefore. Please check your setup.');
 }
 
-
-       // If this value is -1 then the setting has not been modified in localconf.php
-if ($TYPO3_CONF_VARS['SYS']['setDBinit'] == '-1' && $typo_db) {
-       if (t3lib_div::compat_version('4.5')) {
-                       // 1) no option was set in localconf.php but the Update Wizard
-                       //    was already used, so the admin is knowing what he's doing,
-                       // 2) a new installation with the new default value
-               $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8';
-       } elseif (TYPO3_enterInstallScript !== '1' && $typo_db) {
-                       // The value needs to be set in localconf.php
-               die('This installation was just upgraded to TYPO3 ' . TYPO3_branch . '. In this version, some default settings have changed.<br />' .
-                       'You can continue to use your settings by specifying the former default values in localconf.php.<br />' .
-                       'Please proceed to the Update Wizard in the TYPO3 Install Tool to update your configuration.');
-       }
-
-       // Only accept "SET NAMES utf8" for this setting. Otherwise, a deprecation warning will be issued.
-} elseif (!preg_match('/SET NAMES utf8/', $TYPO3_CONF_VARS['SYS']['setDBinit']) && $typo_db) {
-               // TODO: Add a link to a website with more information here
-       t3lib_div::deprecationLog('This TYPO3 installation is using the $TYPO3_CONF_VARS[\'SYS\'][\'setDBinit\'] property with the following value:' . chr(10) .
+if (isset($TYPO3_CONF_VARS['SYS']['setDBinit']) && !preg_match('/SET NAMES utf8/', $TYPO3_CONF_VARS['SYS']['setDBinit'])) {
+       die('This TYPO3 installation is using the $TYPO3_CONF_VARS[\'SYS\'][\'setDBinit\'] property with the following value:' . chr(10) .
                $TYPO3_CONF_VARS['SYS']['setDBinit'] . chr(10) . chr(10) .
                'It looks like UTF-8 is not used for this connection.' . chr(10) . chr(10) .
-               'Everything other than UTF-8 is deprecated since TYPO3 4.5.' . chr(10) .
+               'Everything other than UTF-8 is unsupported since TYPO3 4.7.' . chr(10) .
                'The DB, its connection and TYPO3 should be migrated to UTF-8 therefore. Please check your setup.');
+} elseif (empty($TYPO3_CONF_VARS['SYS']['setDBinit'])) {
+       $TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;';
 }
 
 
+
        // If this value is not -1, then the setting has been modified in localconf.php
 if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['useCachingFramework'] !== -1) {
                // Deprecation log since 4.6, can be removed in 4.8. Checks if obsolete useCachingFramework is set
index 167173d..5239585 100644 (file)
@@ -107,11 +107,8 @@ abstract class t3lib_l10n_parser_AbstractXml implements t3lib_l10n_parser {
 
                if ($charset !== '') {
                        $targetCharset = $csConvObj->parse_charset($charset);
-               } elseif ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']) {
-                               // When forceCharset is set, we store ALL labels in this charset!!!
-                       $targetCharset = $csConvObj->parse_charset($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']);
                } else {
-                       $targetCharset = $csConvObj->parse_charset($csConvObj->charSetArray[$languageKey] ? $csConvObj->charSetArray[$languageKey] : 'iso-8859-1');
+                       $targetCharset = 'utf-8';
                }
 
                return $targetCharset;
index 5a07419..953f495 100644 (file)
@@ -214,12 +214,8 @@ class t3lib_l10n_parser_Llphp implements t3lib_l10n_parser {
                        ? $this->csConvObj->charSetArray[$languageKey] : 'iso-8859-1');
                if ($charset) {
                        $this->targetCharset = $this->csConvObj->parse_charset($charset);
-               } elseif ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']) {
-                               // When forceCharset is set, we store ALL labels in this charset!!!
-                       $this->targetCharset = $this->csConvObj->parse_charset($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']);
                } else {
-                       $this->targetCharset = $this->csConvObj->parse_charset($this->csConvObj->charSetArray[$languageKey]
-                               ? $this->csConvObj->charSetArray[$languageKey] : 'iso-8859-1');
+                       $this->targetCharset = 'utf-8';
                }
        }
 
index 4ad4561..934e92a 100644 (file)
@@ -51,9 +51,9 @@ class TYPO3AJAX {
 
        /**
         * sets the charset and the ID for the AJAX call
-        * due some charset limitations in Javascript (prototype uses encodeURIcomponent, which converts
+        * due to some charset limitations in Javascript (prototype uses encodeURIcomponent, which converts
         * all data to utf-8), we need to detect if the encoding of the request differs from the
-        * backend encoding (e.g. forceCharset), and then convert all incoming data (_GET and _POST)
+        * backend encoding, and then convert all incoming data (_GET and _POST)
         * in the expected backend encoding.
         *
         * @param       string          the AJAX id
@@ -72,8 +72,8 @@ class TYPO3AJAX {
                        $this->requestCharset = $charset;
                }
 
-                               // if the AJAX request does not have the same encoding like the backend
-                               // we need to convert the POST and GET parameters in the right charset
+                       // if the AJAX request does not have the same encoding like the backend
+                       // we need to convert the POST and GET parameters in the right charset
                if ($this->charset != $this->requestCharset) {
                        $GLOBALS['LANG']->csConvObj->convArray($_POST, $this->requestCharset, $this->charset);
                        $GLOBALS['LANG']->csConvObj->convArray($_GET,  $this->requestCharset, $this->charset);
index 3e6bd5b..d5f2fd5 100644 (file)
         */
        var $csConvObj;
        var $defaultCharSet = 'iso-8859-1';     // The default charset used in the frontend if nothing else is set.
-       var $renderCharset='';                          // Internal charset of the frontend during rendering: Defaults to "forceCharset" and if that is not set, to ->defaultCharSet
+       var $renderCharset='';                          // Internal charset of the frontend during rendering. (Default: UTF-8)
        var $metaCharset='';                            // Output charset of the websites content. This is the charset found in the header, meta tag etc. If different from $renderCharset a conversion happens before output to browser. Defaults to ->renderCharset if not set.
        var $localeCharset='';                          // Assumed charset of locale strings.
 
@@ -4782,7 +4782,7 @@ if (version == "n3") {
                $this->getPageRenderer()->setLanguage($this->lang);
 
                        // Setting charsets:
-               $this->renderCharset = $this->csConvObj->parse_charset($this->config['config']['renderCharset'] ? $this->config['config']['renderCharset'] : ($this->TYPO3_CONF_VARS['BE']['forceCharset'] ? $this->TYPO3_CONF_VARS['BE']['forceCharset'] : $this->defaultCharSet));    // Rendering charset of HTML page.
+               $this->renderCharset = $this->csConvObj->parse_charset($this->config['config']['renderCharset'] ? $this->config['config']['renderCharset'] : 'utf-8');  // Rendering charset of HTML page.
                $this->metaCharset = $this->csConvObj->parse_charset($this->config['config']['metaCharset'] ? $this->config['config']['metaCharset'] : $this->renderCharset);   // Output charset of HTML page.
        }
 
index a036026..f55ab14 100644 (file)
@@ -951,14 +951,7 @@ class tslib_pibase {
                                                foreach ($languageArray as $labelKey => $labelValue) {
                                                        if (!is_array($labelValue))     {
                                                                $this->LOCAL_LANG[$languageKey][$labelKey][0]['target'] = $labelValue;
-
-                                                                       // For labels coming from the TypoScript (database) the charset is assumed to be "forceCharset"
-                                                                       // and if that is not set, assumed to be that of the individual system languages
-                                                               if ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']) {
-                                                                       $this->LOCAL_LANG_charset[$languageKey][$labelKey] = $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'];
-                                                               } else {
-                                                                       $this->LOCAL_LANG_charset[$languageKey][$labelKey] = $GLOBALS['TSFE']->csConvObj->charSetArray[$languageKey];
-                                                               }
+                                                               $this->LOCAL_LANG_charset[$languageKey][$labelKey] = 'utf-8';
                                                        }
                                                }
                                        }
index 08368e0..1491b22 100644 (file)
@@ -570,7 +570,7 @@ class tx_em_Tools_XmlHandler {
 
                $preg_result = array();
                preg_match('/^[[:space:]]*<\?xml[^>]*encoding[[:space:]]*=[[:space:]]*"([^"]*)"/', substr($string, 0, 200), $preg_result);
-               $theCharset = $preg_result[1] ? $preg_result[1] : ($TYPO3_CONF_VARS['BE']['forceCharset'] ? $TYPO3_CONF_VARS['BE']['forceCharset'] : 'iso-8859-1');
+               $theCharset = $preg_result[1] ? $preg_result[1] : 'utf-8';
                xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $theCharset); // us-ascii / utf-8 / iso-8859-1
 
                // Parse content:
index f477d7e..d223d67 100644 (file)
@@ -7758,18 +7758,14 @@ $out="
                $this->markers['stylesheets'] = implode(LF, $this->stylesheets);
                $this->markers['llErrors'] = 'The following errors occured';
                $this->markers['copyright'] = $this->copyright();
-               $this->markers['charset'] = $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] ? $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] : 'iso-8859-1';
+               $this->markers['charset'] = 'utf-8';
                $this->markers['backendUrl'] = '../index.php';
                $this->markers['backend'] = 'Backend admin';
                $this->markers['frontendUrl'] = '../../index.php';
                $this->markers['frontend'] = 'Frontend website';
 
                $this->markers['metaCharset'] = 'Content-Type" content="text/html; charset=';
-               if (!empty($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'])) {
-                       $this->markers['metaCharset'] .= $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'];
-               } else {
-                       $this->markers['metaCharset'] .= 'iso-8859-1';
-               }
+               $this->markers['metaCharset'] .= 'utf-8';
 
                        // Add the error messages
                if (!empty($this->errorMessages)) {
@@ -7900,8 +7896,7 @@ $out="
         * @return void
         */
        function output($content) {
-               header ('Content-Type: text/html; charset=' .
-                       ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']?$GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset']:'iso-8859-1'));
+               header ('Content-Type: text/html; charset=utf-8');
                echo $content;
        }
 
index a8f7edd..437687d 100644 (file)
@@ -40,7 +40,9 @@ class tx_coreupdates_charsetDefaults extends Tx_Install_Updates_Base {
         * @return      boolean         whether an update is needed (TRUE) or not (FALSE)
         */
        public function checkForUpdate(&$description, &$showUpdate = FALSE) {
-               if ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] === '-1' ||
+               if ((isset($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'])
+                       && $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] != ''
+                       && $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] != 'utf-8') ||
                                $GLOBALS['TYPO3_CONF_VARS']['SYS']['setDBinit'] === '-1') {
 
                        $description = 'The configuration variables $TYPO3_CONF_VARS[\'SYS\'][\'setDBinit\'] and/or
@@ -71,7 +73,7 @@ class tx_coreupdates_charsetDefaults extends Tx_Install_Updates_Base {
                }
 
                        // Update the "forceCharset" setting
-               if ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] === '-1') {
+               if ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] != '') {
                        $this->pObj->setValueInLocalconfFile($localconf, '$TYPO3_CONF_VARS[\'BE\'][\'forceCharset\']', '');
                }
 
index fa24065..8f3b08e 100755 (executable)
@@ -154,10 +154,6 @@ class language {
                if (in_array($lang, $locales->getLocales())) {
                                // The current language key
                        $this->lang = $lang;
-                       if ($this->charSetArray[$this->lang]) {
-                                       // The charset if different from the default.
-                               $this->charSet = $this->charSetArray[$this->lang];
-                       }
 
                        $this->languageDependencies[] = $this->lang;
                        foreach ($locales->getLocaleDependencies($this->lang) as $language) {
@@ -168,16 +164,6 @@ class language {
                if ($GLOBALS['TYPO3_CONF_VARS']['BE']['lang']['debug']) {
                        $this->debugKey = TRUE;
                }
-
-                       // If a forced charset is used and different from the charset otherwise used:
-               if ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] && $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] != $this->charSet) {
-                               // Set the forced charset:
-                       $this->charSet = $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'];
-
-                       if ($this->charSet != 'utf-8' && !$this->csConvObj->initCharset($this->charSet)) {
-                               throw new RuntimeException('Forced charset not found: The forced character set "'. $this->charSet . '" was not found in t3lib/csconvtbl/', 1294587487);
-                       }
-               }
        }
 
        /**
@@ -238,7 +224,7 @@ class language {
 
        /**
         * Will convert the input strings special chars (all above 127) to entities.
-        * The string is expected to be encoded in the charset, $this->charSet
+        * The string is expected to be encoded in UTF-8
         * This function is used to create strings that can be used in the Click Menu
         * (Context Sensitive Menus). The reason is that the values that are dynamically
         * written into the <div> layer is decoded as iso-8859-1 no matter what charset
@@ -250,11 +236,6 @@ class language {
         * @access      public
         */
        public function makeEntities($str) {
-                       // Convert string to UTF-8:
-               if ($this->charSet != 'utf-8') {
-                       $str = $this->csConvObj->utf8_encode($str, $this->charSet);
-               }
-
                        // Convert string back again, but using the full entity conversion:
                return $this->csConvObj->utf8_to_entities($str);
        }
@@ -267,17 +248,11 @@ class language {
         * rawurlencode() in order to pass strings in a safe way. This could still be done
         * for iso-8859-1 charsets but now I have applied the same method here for all charsets.
         *
-        * @param       string $str             Input string, encoded with $this->charSet
+        * @param       string $str             Input string, encoded with UTF-8
         * @return      string                  Output string, a JavaScript function: "String.fromCharCode(......)"
         * @access      public
         */
        public function JScharCode($str) {
-
-                       // Convert string to UTF-8:
-               if ($this->charSet != 'utf-8') {
-                       $str = $this->csConvObj->utf8_encode($str, $this->charSet);
-               }
-
                        // Convert the UTF-8 string into a array of char numbers:
                $nArr = $this->csConvObj->utf8_to_numberarray($str);
 
index c8e82fc..7172785 100644 (file)
@@ -330,7 +330,7 @@ class tx_rtehtmlarea_base extends t3lib_rteapi {
                        $this->contentCharset = $LANG->csConvObj->charSetArray[$this->contentTypo3Language];
                        $this->contentCharset = $this->contentCharset ? $this->contentCharset : 'iso-8859-1';
                        $this->origContentCharSet = $this->contentCharset;
-                       $this->contentCharset = (trim($TYPO3_CONF_VARS['BE']['forceCharset']) ? trim($TYPO3_CONF_VARS['BE']['forceCharset']) : $this->contentCharset);
+                       $this->contentCharset = 'utf-8';
 
                        /* =======================================
                         * TOOLBAR CONFIGURATION
@@ -1091,9 +1091,7 @@ class tx_rtehtmlarea_base extends t3lib_rteapi {
         */
        function buildNestedJSArray($conf) {
                $convertedConf = t3lib_div::removeDotsFromTS($conf);
-               if ($this->is_FE()) {
-                       $GLOBALS['TSFE']->csConvObj->convArray($convertedConf, ($GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] ? $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] : 'iso-8859-1'), 'utf-8');
-               } else {
+               if (!$this->is_FE()) {
                        $GLOBALS['LANG']->csConvObj->convArray($convertedConf, $GLOBALS['LANG']->charSet, 'utf-8');
                }
                return str_replace(array(':"0"', ':"\/^(', ')$\/i"', ':"\/^(', ')$\/"', '[]'), array(':false', ':/^(', ')$/i', ':/^(', ')$/', '{}'), json_encode($convertedConf));
@@ -1271,9 +1269,9 @@ class tx_rtehtmlarea_base extends t3lib_rteapi {
                global $LANG, $TSFE, $TYPO3_CONF_VARS;
 
                if ($this->is_FE()) {
-                       if (strcmp(substr($string,0,4),'LLL:') && $TYPO3_CONF_VARS['BE']['forceCharset'])       {
+                       if (strcmp(substr($string,0,4),'LLL:')) {
                                        // A pure string coming from Page TSConfig must be in forceCharset, otherwise we just don't know..
-                               $label = $TSFE->csConvObj->conv($TSFE->sL(trim($string)), $TYPO3_CONF_VARS['BE']['forceCharset'], $this->OutputCharset);
+                               $label = $TSFE->csConvObj->conv($TSFE->sL(trim($string)), 'utf-8', $this->OutputCharset);
                        } else {
                                $label = $TSFE->csConvObj->conv($TSFE->sL(trim($string)), $this->charset, $this->OutputCharset);
                        }
index de34a4c..3ead749 100644 (file)
@@ -110,7 +110,7 @@ class tx_rtehtmlarea_acronym extends tx_rtehtmlarea_api {
         */
        function buildJSAcronymArray($languageUid) {
 
-               $charset = $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] ? $GLOBALS['TYPO3_CONF_VARS']['BE']['forceCharset'] : 'iso-8859-1';
+               $charset = 'utf-8';
                $button = 'acronym';
                $acronymArray = array();
                $abbrArray = array();
index dee1db7..866497b 100644 (file)
@@ -913,9 +913,8 @@ All strings from locallang files and locale strings are (and should be) converte
 
 If you need another output charset than the render charset, see "metaCharset" below.
 
-If you set TYPO3_CONF_VARS['BE']['forceCharset'] that value is used by default for "renderCharset". It is highly recommended to use TYPO3_CONF_VARS['BE']['forceCharset'] for multilingual websites in TYPO3. If you set that you don't have to worry about renderCharset and metaCharset - the same charset is used in the whole system.]]></description>
-                       <default><![CDATA[TYPO3_CONF_VARS[BE][forceCharset] if found, otherwise
-"iso-8859-1"]]></default>
+]]></description>
+                       <default><![CDATA[UTF-8]]></default>
                </property>
                <property name="sendCacheHeaders" type="boolean">
                        <description><![CDATA[If set, TYPO3 will output cache-control headers to the client based mainly on ¬†whether the page was cached internally. This feature allows client browsers and/or reverse proxies to take load of TYPO3 websites.