Checke einfach noch einmal: # # The MySQL database server configuration file. # # You can copy this to one of: # - "/etc/mysql/my.cnf" to set global options, # - "~/.my.cnf" to set user-specific options. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html
# This will be passed to all mysql clients [client] default-character-set = utf8 ... [mysqld] # setting db server to UTF8 collation_server=utf8_general_ci character_set_server=utf8 # On the other hand, if you want to ensure MySQL always stores # and retrieves data in the UTF-8 charset regardless of what a # client requests add the following directive to the [mysqld] section # of your MySQL config file. #skip-character-set-client-handshake # * Basic Settings ... [mysqldump] ... [mysql] # Setting MySql System to utf8 default-character-set=utf8 collation_connection=utf8_general_ci #no-auto-rehash # faster start of mysql but no tab completition [isamchk] ... ----------------------------- In localconf.php deactiviere/loesche die settings die man noch zuvor gebraucht hatte: (TIP: teste zuerst mit deactivieren) // UTF8 //$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8'; // loeschen //$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8'; // loeschen $TYPO3_CONF_VARS['SYS']['t3lib_cs_convMethod'] = 'mbstring'; $TYPO3_CONF_VARS['SYS']['t3lib_cs_utils'] = 'mbstring'; //$TYPO3_CONF_VARS['SYS']['UTF8filesystem'] = '1'; // loeschen ----------------------------- in php.ini If your scripts will contain multi-byte characters be sure to encode them in UTF-8. Any decent text editor can do this for you (I like notepad++). In your PHP config, set the default_charset and mbstring.internal_encoding to UTF-8. ; PHP's default character set is set to empty. ; http://php.net/default-charset ;default_charset = "iso-8859-1" default_charset = "UTF-8" mbstring.internal_encoding = UTF-8 ----------------------------- Apache Web browsers need to know what character set to use for the documents you send it. Your server needs to include charset=utf-8 in the Content-Type HTTP header so clients will handle UTF-8 encoded documents correctly. There are a variety of ways you can do this and a simple approach would be to set UTF-8 as the default character set. Here are a few ways you can do this -- add the method of your choice to httpd.conf or your root htaccess file: // make utf-8 the default charset for everything AddDefaultCharset UTF-8 // or specifically for php, html, xml, javascript etc.. AddCharset UTF-8 .php AddCharset UTF-8 .html AddCharset UTF-8 .xml AddCharset UTF-8 .js ----------------------- TESTING An example in code. From Sam Ruby’s i18n Survival Guide, he recommends using the string Iñtërnâtiônàlizætiøn for testing. Counted with your eye, you can see it contains 20 characters; Iñtërnâtiônàlizætiøn 12345678901234567890 But counted with PHP‘s strlen function... <?php echo strlen('Iñtërnâtiônàlizætiøn'); ?> PHP will report 27 characters. That’s because the string, encoded as UTF-8, contains multi-byte characters which PHP‘s strlen function will count as being multiple characters. Life gets even more interesting if you run the following2); <?php header('Content-Type: text/plain; charset=ISO-8859-1'); $str = 'Iñtërnâtiônàlizætiøn'; $out = ''; $pos = ''; for($i = 0, $j = 1; $i < strlen($str); $i++, $j++) { $out .= $str[$i]; if ( $j == 10 ) $j = 0; $pos .= $j; } echo $out."\n".$pos; ?> You should see something like; Iñtërnâtiônà lizætiøn 123456789012345678901234567 >>>> http://www.phpwact.org/php/i18n/charsets http://www.itnewb.com/v/UTF-8-Enabled-Apache-MySQL-PHP-Markup-and- http://www.joelonsoftware.com/articles/Unicode.html http://en.wikipedia.org/wiki/Category:Character_sets http://en.wikipedia.org/wiki/Character_encoding http://en.wikipedia.org/wiki/UTF8 >>>> ================================= Locales root@srv:/# locale -a C da_DK.utf8 de_AT.utf8 de_BE.utf8 de_CH.utf8 de_DE.utf8 de_LI.utf8 de_LU.utf8 en_AU.utf8 en_CA.utf8 en_GB.utf8 en_US.utf8 es_ES.utf8 fi_FI.utf8 fr_FR.utf8 it_IT.utf8 ja_JP.utf8 nl_NL.utf8 nn_NO.utf8 POSIX ru_RU.utf8 sv_SE.utf8 th_TH.utf8 zh_CN.utf8 zh_HK.utf8 root@srv:/# locale LANG=en_GB.UTF-8 LC_CTYPE="en_GB.UTF-8" LC_NUMERIC="en_GB.UTF-8" LC_TIME="en_GB.UTF-8" LC_COLLATE="en_GB.UTF-8" LC_MONETARY="en_GB.UTF-8" LC_MESSAGES="en_GB.UTF-8" LC_PAPER="en_GB.UTF-8" LC_NAME="en_GB.UTF-8" LC_ADDRESS="en_GB.UTF-8" LC_TELEPHONE="en_GB.UTF-8" LC_MEASUREMENT="en_GB.UTF-8" LC_IDENTIFICATION="en_GB.UTF-8" LC_ALL= loc The Easy Way Install debconf (i.e. run apt-get update then apt-get install debconf, as root) Run dpkg-reconfigure locales as root The Hard Way Edit /etc/locale.gen as root. If /etc/locale.gen does not exist, create it. An example /etc/locale.gen is below. Run /usr/sbin/locale-gen as root A sample /etc/locale.gen # This file lists locales that you wish to have built. You can find a list # of valid supported locales at /usr/share/i18n/SUPPORTED. Other # combinations are possible, but may not be well tested. If you change # this file, you need to rerun locale-gen. # # XXX GENERATED XXX # # NOTE!!! If you change this file by hand, and want to continue # maintaining manually, remove the above line. Otherwise, use the command # "dpkg-reconfigure locales" to manipulate this file. You can manually # change this file without affecting the use of debconf, however, since it # does read in your changes. en_US.UTF-8 UTF-8 2011/3/1 Sven Kalbhenn <s...@skom.de> > Hallo zusammen, > > ich habe mir einen neuen Server gegönnt und versuche gerade eine > TYPO3-Installation (Version 4.5.2) auf den neuen Server umzuziehen. > Leider werden auf dem neuen Server jetzt die Umlaute sowohl im Backend als > auch im Frontend immer falsch angezeigt (z.B. ä statt ä), obwohl auf > beiden Servern UTF-8 zum Einsatz kommt. > > Auf dem alten Server lief: > - PHP 5.2.6 > - MySQL 5.0.51a > > Auf dem neuen Server läuft: > - PHP 5.3.3 > - MySQL 5.1.46 > > Ich habe mit "mysqldump --default-character-set=utf8 myDB > myDB.sql" > einen Datenbank-Dump erstellt. > Diesen Dump habe ich dann auf dem neuen Server mit "mysql -D > --default-character-set=utf-8 myDB < myDB.sql" wieder eingespielt. > (In beiden Fällen habe ich es auch ohne --default-character-set=utf-8 > versucht - ohne dass sich was geändert hat.) > Unter PhpMyAdmin sehen auch beide Datenbanken und auch die Einträge gleich > aus. > In beiden TYPO3-Installationen habe ich "forceCharset" auf "utf-8" gesetzt. > > Trotzdem werden die Umlaute auf dem neuen Server falsch angezeigt. :-( > Ich habe bereits mehrere Stunden lang, alle möglichen Varianten ausprobiert > - ohne Erfolg. > Jetzt bin ich mit meinem Latein am Ende! :-(( > > Hat irgend jemand eine Idee was ich falsch mache??? > Für jeden Tipp wäre ich sehr dankbar!! > > Viele Grüße…Sven > > _______________________________________________ > TYPO3-german mailing list > TYPO3-german@lists.typo3.org > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german > _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german