Zum Inhalt springen

Keine Umlaute mit GIFBUILDER

Erstellt am 17. August 2006 · 49 Antworten · letzte Antwort am 24. September 2010 · Seite 3 von 3

Tags: Bilder, Frage

BastianBalthasarBux ·

tja, spätestens wenn beim händischen kompilieren von php ein fehler gemacht wurde (weil zb. eine kleinigkeit vergessen wurde), und das dann nach einem warmstart geladen wurde krachts halt.
aber mir is eh wurscht, soll doch jeder machen wie er mag.
nur hinterher nicht hier im forum hoilen! 😉

btw: man könnte das neu kompilierte php auch (und das wäre viel sicherer) als cgi einbinden. -> das kann man dann pro vhost einbinden. ist halt langsamer.

und wer ist hier webhoster? ich zb. hoste ausschliesslich eigenentwickelte projekte. und zwar deswegen, weil ich mit so anfängern zu tun hatte, die eben genau das gemacht haben, nämlich php neu kompiliert und niemandem was gesagt. oder auch andere änderungen am server. und irgendwann stinkt es einem halt, wenn man die fehler von anderen ausbaden darf. bei den eigenen, naja, da kann man sich dann wenigstens an der eigenen nase packen.

ps: bei mir ists eh händisch kompiliert. -> aber bitte jetzt keine fragen wie das geht, da müsst ma ja bei adam und eva anfangen ...

bofh999 ·

stimmt ich geb dir recht
da muss man bei adam und eva anfangen.

nur typo3 und standart deb pakete is nicht das ware. überhaupt sollte man bei php auf pakete verzichten. sog gut es ist durch die verbreitung treten eben sehr häufig sec. probleme auf. (über bugfixes schweigen wiruns mal aus :-)

was das vergessen betrifft so hilfts einfach die configure wurscht als file abspeichern und gleich als solches ausführbar setzen.
zusatzmodule einfach hinzufügen hilft beim vergessen 😃
i leide ja auch unter alzheimer

muss ma ja ohnehin häufig machen wenn man nur benötigte extensions aktivieren will.

bofh999 ·

also zurück zum problem
als den String leer lassen hilft wirklich nicht.

zuerst sollte man mal in die datenbank schauen ob die umlaute wirklich als umlaute dort stehen oder sonderzeichen (acuh wenns typo dann wieder richtig darstellt.

diegefahrt besteht bei komplett umgestellen mysqlsystem (meines läuft zu 100% unter utf8-) das hier auf einer utf8 connection ein latin1 übergeben wird und mysql es somit doppel codiert

es kommt dann wieder richtig zurück.

sollte das so sein reicht nicht nur das force charset aus sondern
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;';
SONST NICHTS (kein set charackter set connection etc)

Das aber nur nebnbei und kann ebenfalls zu dem Umlaut Problem führen

erst wenn das alles soweit in ordnung ist (im backend/frontend wie ind er datenbank utf8 mit umlauten)

kann man sich an das gifbuilder problem ranwagen

BastianBalthasarBux ·

hähä, gut dass du es erwähnst. aber an und für sich sollte allen klar sein, dass für UTF8 die db auch auf utf sein sollte. und ebenfalls das DBinit auf utf8.

steht ja eh irgendwo in den tuts zu typo3 & utf8 drinnen.

eine mysqldb mit schwedisch als collation kann nicht funktionieren! 😉

--> schon gesehen nebenbei.

den ttf localeconf string sollte man jedenfalls leer lassen wenn:

be auf force utf8 steht,
und die db auch auf utf8
ansonstens es kracht!
dann auch am frontend es geht
wenn config.renderCharset = utf8 steht
(oder so ähnlich, siehe tsref)
😉

bofh999 ·

Daher sagte ich auch einen voll Umgestellten server :-)
Sprich
charater-set-server
default-character-set
collation-server
character-set-client
jeweils = utf8 (achtung nicht utf-8 :-)

Natürlich auch die DB und die Tables auf utf8 unicode

Halt stop nein die Tables sind natürlich utf8 hier liegt das problem beim setdbinit und forcecharset. da überschneidet sich was. wenn du mehr als das set names im set dbinit angibts und forcecharset aktivierst ist vorbei und mysql codiert von sich aus latin auf utf8 obwohl d anichts mehr ist was mit latin zu tun hätte:-)

es wär wirklich mal zeit den ganzen encoding müll in ein setup zu bringen

Ahja noch etwas zur recode function. Also ich kanns jetzt nur auf 64bit Systemen nachvollziehen (angeblich sollts unter 32 bit gehen so recht wie schlecht)
wird nicht zu kompilieren sein mit dem mysql support (und imap geht auch nicht)

es gibt auch extra warnings das recode als erstes geladen werden sollte weil die mysql extension wegen dem hash_insert sich gegenseitig nicht mögen (tja langsam kommen die schatten von open=nichtso standart=source auf)

also recode und 64bit und mysql geht nicht. man könnte den cponfigure umgehen recode als shared bauen und danach die mysql (bitte dann ebenfalls shared)
dann die module manuell laden als .so

natürlich hier das recode als erstes :-) theoretisch sollte das stabil laufen. wers teste will bitte gern #evil#

Gunah ·

in einem anderen Typo3 wurde das Charset UTF8 nur in der localconf.php angegeben in der MySQL aber nicht... die ist immer noch Latin-1, kann man das Ohne Problme jetzt alles auf UTF8 bringen, oder müsste man dann alle Seiten und News, und, und, und wieder umkonvertieren...

fragt mich nicht warum das so gemacht wurde...

Umlaute werden in der DB bspw. so angegeigt:
für = für

Ich will nur nicht im Produktivem System rumbastel...

Kompilieren:
Zum Kompilieren, währe es besser nur GDlib zu Kompilieren... für Produktive Server...
Ansonsten macht man es mit fast-cgi, nicht mit CGI... cgi ist einfach zu lahm!
und Testet alles druch, und übernimmt die andere Config...

Gruß
Gunah

BastianBalthasarBux ·

So kann man auf utf-8 umstellen: db dump zb. mit phpmyadmin aber auf iso eingestellt. -> anschliessend neue db anlegen mit utf8 -> dump importieren.

sollte normalerweise funktionieren.

wenn es hakt -> mit recode oder ähnlichem das sql file umkodieren -> und dann erst importieren.

Gunah ·

in welches UTF8 muss den die DB sein?

steht alles in utf8_general_ci und es ist aber keine Veränderung da:

und das hier ist in der localconf.php

$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;';
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';

weil alles bleibt beim alten...

Sprich die Umlaute sind in der MySQL DB immer noch komisch Codiert und werden von Typo3 wenn man es via Typo3 macht auch immer noch flasch Angelegt...

Ü in der DB = Ü

Edit: // habe gerade im Browser mal manuell in iso-8859-1 geändert dort wird die sachen die ich der DB Manuell geändert habe richtig angezeigt aber die anderen sachen nicht...

Forrest Gump ·
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8'.chr(10).'SET CHARACTER SET utf8'.chr(10).'SET SESSION character_set_server = utf8'.chr(10).'SET character_set_connection = utf8';
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';

So läuft es bei mir erfolgreich. Wenn deine Datenbank vorher auf ISO-8859-1 stand, dann wirst du wohl erst mal einen dump machen müssen und den dump dann in eine utf8_general_ci importieren müssen. Google mal nach TYPO3 Datenbank konvertieren utf-8.

andreas

BastianBalthasarBux ·

es gibt auch eine extension für die konvertierung von iso auftritten in utf8 auftritte (im ter nach utf suchen sollte helfen).
aufpassen muss man aber wenn man zb. typoscript in dateien verwendet -> muss auch in utf8 konvertiert werden (zb mit ultraedit). besonders wenn man locallang werte dort einträgt.
genauso mit html templates.

Gunah ·

das Script von "McPringle" ist nicht schlecht, nur empfehle ich vorher die ganzen Cache tabellen zu leeren, und dann das Script zu starten sonst dauert das zu lange...

Gruß
Gunah

EDIT://
habe jetzt alle Tabellen in utf8 (per PHPmyAdmin kontrolliert), die Extension: cr_bugfix_5078 installiert leider ist das ergebnis immer noch das gleiche...
Ohne Extension ist es so "ber Uns"
Mit Extension ist es so "Ãber Uns"

habe die DB vorher mit dem Script von McPringle konvertiert dann die Local angepasst:

$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8'.chr(10).'SET CHARACTER SET utf8'.chr(10).'SET SESSION character_set_server = utf8'.chr(10).'SET character_set_connection = utf8';
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
$TYPO3_CONF_VARS['GFX']['TTFLocaleConv'] = '';

EDIT-2://
habe den "Fehler" gefunden...
Ich habe in der "class.ux_tslib_gifbuilder.php" folgendes geändert:

return mb_encode_numericentity($content,$convmap);

zu

return mb_encode_numericentity($content,$convmap,mb_detect_encoding($content, "auto"));

danach wurden alle Umlaute angezeigt

Edit-3:// Könnte man nicht bei der EXT. eine Option reinbauen, welchen Mode man benutzen will?
wie bei tt_news usw...

Edit-4: habe jetzt die funktion auf class.ux_tslib_gifbuilder.php gelöscht und die andere angefügt...

Gruß
Mathis

Gunah ·

wer das letzt Beschriebene Problem hat. und alles auf UTF-8 Umgestellt hat und Trotzdem keine Umlaute angezeigt bekommt, kann erstmal mit dieser Extension lösen.

http://serviceconnect.de/dev/mk_bugfix_5078_add.t3x
liegt jetzt auch im TER

Ich hoffe das die Änderungen, die in dieser Extension sind auch bald in die "Orginale" Extension kommt...
eine E-Mail habe ich dazu schon verschickt... naja mal gucken...

Beim Testen bei mir funktioniert alles wie es soll 🙂
Nutzung auf eigene Gefahr...

Sollte Typo3 mit einer ISO Kodierung betrieben werden, funktioniert meine Extension hier nicht...

christe ·

Hallo,
ich rolle dass hier einfach nochmal auf:
Ich würde gerne mit dem GIFBUILDER auch kyrillische Zeichen und andere internationale Zeichen (z.B. Chinesisch) verwenden. Umlaute funktionieren mit der hier im Thread Lösung ausgezeichnet.
Muss ich theoretisch nur die conversionmap (in der EXT mk_bugfix_5078-) ändern ? Oder sollte das mit dem richtigen Font auch funktionieren ?
Gruß,
Christoph

gkai ·

Uargh ... Sechs Stunden Arbeit, bis meine Umlaute in grafischen Überschriften funktioniert haben. Ich fasse die Schritte aus diesem Thread, die bei mir dann letztendlich funktioniert haben, mal zu einer Checkliste zusammen, um anderen den Weg zu erleichtern:

1. Typo3 umstellen auf utf-8
1.1. Im Server-Adminpanel einstellen, dass die Typo3-Datenbank UTF8 verwendet.
1.2. In der localconf einfügen

$TYPO3_CONF_VARS['GFX']['TTFLocaleConv'] = '';
$TYPO3_CONF_VARS['SYS']['setDBinit'] = 'SET NAMES utf8;';
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';

1.3. Im Setupbereich des Haupttemplates einfügen:

page.config.metaCharset = utf-8
page.config.additionalHeaders = Content-Type:text/html;charset=utf-8
page.config.renderCharset = utf8

1.4. Die Extension convert2utf8 installieren und damit den kompletten Seitenbaum wandeln lassen
1.5. Wenn die Sonderzeichen in den Content Elementen danach kaputt, von Hand mit den richtigen Zeichen überschreiben

2. utf-8-Font bereitstellen
2.1. Mit FontForge (ist kostenlos downloadbar) prüfen, ob die gewählte Schrift in utf-8 bzw. Unicode kodiert ist. Wenn nicht: Encoding - Reencode - ISO 10646-1, dann File - Generate Font.
2.2. Font auf den Server laden
2.3. Im Setup-Template für die grafischen Überschriften den korrigierte Font einstellen, wenn er unter anderem Namen gespeichert ist als der Ursprungsfont

3. GIFBUILDER-Fehler korrigieren
3.1 Extension cr_bugfix_5078 installieren
3.2 Wenn die Umlaute noch nicht funktionieren: In Datei class.ux_tslib_gifbuilder.php (Pfad: typo3conf/ext/cr_bugfix_5078-) Zeile 43 auskommentieren und bei Zeile 44 die Auskommentierung entfernen, so dass da steht

//return mb_encode_numericentity($content,$convmap);
return mb_encode_numericentity($content,$convmap,mb_detect_encoding($content, "auto"));

Damit war das Problem bei mir ausgestanden. Falls es noch nicht behoben ist, kann man wohl noch die Extension mk_bugfix_5078_add zusätzlich installieren, das war bei mir aber nicht nötig.

Insbesondere die Sache mit der falschen Font-Codierung ist nervig, vier Stunden hat es mich gekostet, diesen Fehler zu bemerken ... Aber nun, http://www.alligatorfarm.de läuft, die Leute können wieder Perry Rhodan-Comics kaufen, und alle sind glücklich. Nur ich bin müde.

Beste Grüße
Kai[/url]

Forrest Gump ·

Puh, was ne Mühe. Wollte nur noch korrigiert haben, dass du folgende 3 Zeilen ersatzlos streichen kannst.

1. page.config.metaCharset = utf-8
2. page.config.additionalHeaders = Content-Type:text/html;charset=utf-8
3. page.config.renderCharset = utf8

Erklärung:

weil du

$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';

gesetzt hast, wird dieser Wert default für metaCharset und renderCharset genommen. utf8 wäre übrigens falsch, utf-8 richtig. Der Header wird auch default gesendet, siehe Erklärung zu disableCharsetHeader in der TSRef. Alle Infos aus der TSRef.

Gruß Andreas

toifel ·

Noch einmal herzlichen Dank an alle, die hier dran beteiligt waren... der Thread hat mir ne Menge Zeit erspart, mit der Step-by-Step Beschreibung von gkai hat's letztendlich super funktioniert!