So, wenn man Dummie ist, passiert derartiges mit Asci und UTF Unterschieden. Die Substr-Funktion kann man schlecht auf 2 Byte lange türkische Zeichen anwenden. Lösung:
Mein Problem mit der Sortierung bleibt aber noch bestehen. Zwischenzeitlich sieht die Testtabelle folgendermassen aus:PHP-Code://------ testfunktion ------//
function testfunktion($content,$conf) {
$rs=$GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tx_test_test','pid=77','','test collate utf8_general_ci');
$register='';
$content.='<table width="50%">';
while($this->internal['currentRow'] = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($rs)) {
$content.='<tr>';
$content.='<td>Original: '.$this->internal['currentRow']['test'].'</td>';
$laenge=$this->Utf8Zeichenlaenge($this->internal['currentRow']['test'],1);
$register=substr($this->internal['currentRow']['test'],0,$laenge);
$content.='<td>Länge: '.$laenge.'</td>';
$content.='<td>Nach Substr: '.$register.'</td>';
$content.='</tr>';
}
$content.='</table><br />';
return $content;
}
//--- Position ---
function Utf8Zeichenlaenge ($string,$pos) {
//Quelle: http://forum.de.selfhtml.org/archiv/2005/3/t104162/
if(ord($string{$pos}) < 0x80) {
$offset = 1;
} else if(ord($string{$pos}) < 0xe0) {
$offset = 2;
} else {
$offset = 0;
}
return $offset;
}
Das Problem muss an meiner eigenen Dummheit liegen, nur ich komme nicht hinter meine Dummheit. Kann mir bitte jemand helfen? Ich krieg ja nicht mal die deutsche Sortierung hin!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) COLLATE utf8_general_ci DEFAULT '' NOT NULL , PRIMARY KEY (uid), KEY parent (pid) ) default character set = utf8 COLLATE=utf8_general_ci;
Gruss Mensch




LinkBack URL
About LinkBacks
?
Zitieren
Lesezeichen