Einzelnen Beitrag anzeigen
  #1  
Alt 18.03.07, 10:29
Benutzerbild von mensch
mensch mensch ist offline
Forum Stammgast
 
Registriert seit: 11.01.07
Ort: NRW, Köln
Alter: 53
Beiträge: 109

UTF8 - eigene Extension > Sortierung > Substr


Moin,
knappse nunmehr seit drei Tagen an nachfolgendem Problem herum und bin jetzt komplett durcheinander: Habe eine Extension für mehrsprachige Kochzutaten (derzeit deutsch + türkisch) geschrieben, wo man beide Inhalte gleichzeitig eingibt.

Der Text - sei es deutsch oder türkisch - wird richtig im Frontend mit allen Sonderzeichen ausgegeben. Als nun ein paar Inhalte eingepflegt wurden, merkte ich, dass die sortierte Liste nicht korrekt sortiert wird und die Buchstabenübersicht, die aus einem substr generiert wird, auch nicht die korrekten Zeichen anzeigt.

Da ich annahm, dass dieses Problem mit dem Zeichensatz der Datenbank, des Schemas oder der Tabelle zusammenhing, habe ich eine Testextension generiert, die folgende Tabelle nutzt:
Code:
CREATE TABLE tx_test_test (
	uid int(11) NOT NULL auto_increment,
	pid int(11) DEFAULT '0' NOT NULL,
	tstamp int(11) DEFAULT '0' NOT NULL,
	crdate int(11) DEFAULT '0' NOT NULL,
	cruser_id int(11) DEFAULT '0' NOT NULL,
	hidden tinyint(4) DEFAULT '0' NOT NULL,
	test varchar(20) DEFAULT '' NOT NULL,
	
	PRIMARY KEY (uid),
	KEY parent (pid)
)
default character set = utf8;
Über das Backend habe ich alle deutschen und türkischen Zeichen in Grossbuchstaben einzeln eingegeben. Die Funktion, die die Daten in der Extension abgreift sieht so aus:
PHP-Code:
function testfunktion($content,$conf)  {
  
$rs=$GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tx_test_test','pid=77','','test collate utf8_turkish_ci');
  
$register='';
  
$content.='<table width="50%">';
  while(
$this->internal['currentRow'] = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($rs))  {
    
$content.='<tr>';

    
$register=substr(utf8_decode($this->internal['currentRow']['test']),0,1);

    
//Spalte 1
    
$content.='<td>'.$this->internal['currentRow']['test'].'</td>';
    
//Spalte 2
    
$content.='<td>'.$register.'</td>';
    
//Spalte 3
    
$content.='<td>'.utf8_encode($register).'</td>';
    
$content.='</tr>';
  }
  
$content.='</table><br />';
  return 
$content;

Das Ergebnis ist nicht schön
A A A
Ö � Ö
Ä � Ä
Ç � Ç
İ ? ?
Ü � Ü
Ş ? ?
Ğ ? ?
B B B
C C C
D D D
E E E
F F F
G G G
H H H
I I I
J J J
K K K
L L L
M M M
N N N
O O O
P P P
Q Q Q
R R R
S S S
T T T
U U U
V V V
W W W
X X X
Y Y Y
Z Z Z

Meine Einstellungen sind folgende:
Typo3
[BE][forceCharset] = utf-8

SHOW VARIABLES LIKE '%collation%'
collation_connection utf8_general_ci
collation_database latin1_swedish_ci
collation_server latin1_swedish_ci

SHOW VARIABLES LIKE '%character%'
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_results utf8
character_set_server latin1
character_set_system utf8

Was nur habe ich falsch gemacht in meiner dummen Unwissenheit ?
Gruss Mensch
__________________
Noch immer Typ3Dummie: Wenn ich weiss, dass ich nichts weiss, weiss ich mehr, als wenn ich nicht weiss, dass ich nichts weiss.

Geändert von mensch (20.03.07 um 09:17 Uhr).
Mit Zitat antworten