Anzeige - [Hier werben / Mediadaten]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
> umlaute in url ersetzen
vendy
Geschrieben am: Mi 7.03.2007, 21:05
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 109
Mitglied seit: 28.03.2004


hi,

ich habe meine alten in google indexierten urls:
http://www.kinder-archiv.de/detail/link-59.html

umgeschrieben, sodass sie nun den titel enthalten:
http://www.kinder-archiv.de/detail/Kidsact...edichte-59.html
(domain.de/detail/title-id.html)

weiterhin habe ich für die alten urls einen 301 redirect eingebaut, damit sie auf die neue url weiterleiten:
http://www.kinder-archiv.de/detail/link-59.html

das klappt auch wunderbar, solange die url keine umlaute besitzt, siehe hier:
http://www.kinder-archiv.de/detail/link-333.html

die umlaute sollten aber ersetzt werden damit die url so aussieht:
http://www.kinder-archiv.de/detail/Gluewue...n_e.V.-333.html


der code dafür sieht wie folgt aus:
require_once 'init.php';
CODE

if (ENABLE_REWRITE == 1)
{
  preg_match ('`(\d+)\.htm[l]?$`', request_uri(), $matches);
  // Determine link ID
  $id = (!empty ($matches[1]) ? intval ($matches[1]) : 0);
 
   $cdata2 = $db->GetRow("SELECT * FROM {$tables['link']['name']} WHERE `ID` = ".$db->qstr($id));
   $ctree        = $cdata2['TITLE'];
   
   $umlaute = array("ä","ö","ü","Ü","Ä","Ö","ß"," ","Ä","Ö","&Uuml","&auml","ö","ü");
   $keineuml = array("ae","oe","ue","Ue","Ae","Oe","ss", "_","Ae","Oe","Ue","ae","oe","ue");
   $title2 = str_replace($umlaute, $keineuml, $ctree);

   $aufruf = $_SERVER["REQUEST_URI"];
   if($aufruf == "/detail/link-$id.html" || $aufruf == "//detail/link-$id.html")
   {
   header("HTTP/1.1 301 Moved Permanently");
   header("Status: 301 Moved Permanently");
   header("Location: [URL=http://www.kinder-archiv.de/detail/$title2-$id.html");]http://www.kinder-archiv.de/detail/$t...id.html");[/URL]
   header("Connection: close");
   exit();
   }
}


ich habe die datei im ANSI format gespeichert. habe es auch im UTF und ISO format versucht, aber dann wird entweder nur quatsch angezeigt oder die ganze seite falsch interpretiert.

kann mir wer weiterhelfen?

grüße,
ven


--------------------
Top
PMEmail Poster
Top
 
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#2 Geschrieben am: Mi 7.03.2007, 21:49 (+00:43)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2430
Mitglied seit: 4.02.2006


PHP scheint da heftige Probleme mit Umlauten zu haben.

Etwas analoges wurde hier diskutiert und schließlich auch gelöst.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 
vendy
#3 Geschrieben am: Mi 7.03.2007, 22:14 (+00:24)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 109
Mitglied seit: 28.03.2004


da ich ja keine umlaute vergleichen möchte, sollte es mit der speicherung im UTF format ja eigentlich getan sein? funktioniert aber leider nicht. habe die .php datei mit dem windowseditor im UTF format gespeichert und hochgeladen. ausgabe ist:

CODE

unter seiteninformationen steht: Kodierung: ISO-8859-15



--------------------
Top
PMEmail Poster
Top
 
yam
#4 Geschrieben am: Mi 7.03.2007, 23:50 (+01:36)
Report PostQuote Post

AyomRank 2
****

Gruppe: Member (aktiv)
Beiträge: 19
Mitglied seit: 26.02.2007


Hi

Im Html-Header musst Du

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">

angeben, damit der Browser auf utf8 umschaltet.

Die komischen Zeichen sind zur Kennung für z.B Editor gedacht.

Grüsse
yam
Top
PM
Top
 
vendy
#5 Geschrieben am: Do 8.03.2007, 13:49 (+13:59)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 109
Mitglied seit: 28.03.2004


hi, danke für deine antwort.

das komische ist, dass ich in meinem header bereits:
CODE
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

drin stehen habe.

siehe: http://www.kinder-archiv.de/detail/Gl%C3%B...n_e.V.-333.html
im firefox rechtsklick -> seiteninformationen:
Kodierung: UTF-8
Content-Type: text/html; charset=UTF-8


--------------------
Top
PMEmail Poster
Top
 
yam
#6 Geschrieben am: Do 8.03.2007, 14:05 (+00:15)
Report PostQuote Post

AyomRank 2
****

Gruppe: Member (aktiv)
Beiträge: 19
Mitglied seit: 26.02.2007


Hallo,

oben sagtest Du noch:
QUOTE
unter seiteninformationen steht: Kodierung: ISO-8859-15


?
Top
PM
Top
 
vendy
#7 Geschrieben am: Do 8.03.2007, 14:44 (+00:39)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 109
Mitglied seit: 28.03.2004


ja, wenn ich die per windows editor öffne und als datei mit UTF kodierung speichere.

dann funktioniert nämlich garnichts mehr und es wird nur folgendes angezeigt:
CODE



unter seiteninformationen steht dann: Kodierung: ISO-8859-15


--------------------
Top
PMEmail Poster
Top
 
jAuer
Jürgen Auer - freiberufl. Programmierer
#8 Geschrieben am: Do 8.03.2007, 22:57 (+08:13)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 2430
Mitglied seit: 4.02.2006


QUOTE (vendy @ Mi 7.3.2007, 22:14)
da ich ja keine umlaute vergleichen möchte

Damit

QUOTE
$title2 = str_replace($umlaute, $keineuml, $ctree);


vergleichst Du Umlaute.

QUOTE (vendy @ Mi 7.3.2007, 22:14)
sollte es mit der speicherung im UTF format ja eigentlich getan sein? funktioniert aber leider nicht.


Wenn Du den oben verlinkten Thread vollständig durcharbeiten würdest, dann wüßtest Du, daß das mit UTF-8 in deinem Fall höchstwahrscheinlich nicht funktioniert - dazu bräuchtest Du dann die m-Stringfunktionen.


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 
Maik
power-labels AG
#9 Geschrieben am: Fr 9.03.2007, 00:28 (+01:30)
Report PostQuote Post

AyomRank 5
**********

Gruppe: Member (aktiv)
Beiträge: 485
Mitglied seit: 16.03.2006


Deine UTF-Kodierung ist richtig, und die Ausgabe ist verständlich. Das ist kein Fehler von PHP, und genaugenommen ist es überhaupt kein Fehler sondern ein Missverständnis.

Das:
QUOTE



Ist der so genannte BOM (das steht kurz für "Byte order mark" (?))

Notepad und einige andere Windows-Editoren setzen diese 3 Byte am Anfang einer Datei die im UTF-8 Format gespeichert ist. Damit ist es einfacher für Editoren herauszufinden welcher Zeichensatz benötigt wird, um eine Datei korrekt dazu stellen. Also ganz simpel: Wenn eine Text-Datei geöffnet wird, werden die ersten 2-4 Byte der Datei gelesen und wenn das ein BOM ist, weiß der Editor: "aha, so ist der Inhalt also zu verstehen"

Das Problem ist, der Webserver schickt diese BOM als Ausgabe direkt mit (in der PHP Datei steht es schließlich vor dem öffnenden PHP-Tags) an den Browser. Der Webserver weiß nun nicht was er machen soll, denn nach dem HTT-Protokoll dürfen vor dem HTTP-Header keine Zeichen kommen. Daher schickt er einfach die Zeichen mit seinem Standard-Header, und der nachvollgende Header (den dein Script generieren will) wird weggeschmissen.

Nun da deine PHP-Datei schon kodiert ist, gibt es eine recht einfache Lösung. Hol dir einen Hex-Editor und lösch aus der Datei die ersten 3 Bytes. Empfehlen kann ich da: XVI32 (Direkter Download)

Für weitere Bearbeitungen würde ich dir einen anderen Editor empfehlen, bei dem man BOMs abschalten kann. Da gibt es einige, mir fällt aber spontan keiner ein. Glaube "Phase 5" kann das.


--------------------
Top
PMEmail PosterUsers WebsiteICQ
Top
 
vendy
#10 Geschrieben am: Fr 9.03.2007, 13:09 (+12:40)
Report PostQuote Post

AyomRank 4
********

Gruppe: Member (aktiv)
Beiträge: 109
Mitglied seit: 28.03.2004


Alles klar, danke! Habe meine mit dem WindowsEditor im UTF8-Format gespeicherte .php Datei mittels HEX-Editor geöffnet und die genannten drei Zeichen entfernt. Hochgeladen, klappt. Klappt dann anscheinend auch ohne die m-Stringfunktionen.


--------------------
Top
PMEmail Poster
Top
 
Jörg Kruse
#11 Geschrieben am: Fr 9.03.2007, 13:28 (+00:19)
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 418
Mitglied seit: 19.12.2004


QUOTE (Maik @ Fr 9.3.2007, 0:28)
Für weitere Bearbeitungen würde ich dir einen anderen Editor empfehlen, bei dem man BOMs abschalten kann. Da gibt es einige, mir fällt aber spontan keiner ein. Glaube "Phase 5" kann das.

Phase 5 hat leider überhaupt keine Unterstützung von UTF. Notepad++ und SuperEdi unterstützen UTF-8 und dort kann man das BOM auch entfernen


--------------------
Top
PMEmail PosterUsers Website
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/17148

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
PHP include und Umlaute Crazymind 337 4 Mi 12.03.2008, 12:48
Umlaute Falsch dargestellt G.P. 255 2 Sa 8.12.2007, 17:54
Umlaute falsch in Easylink durch Google Adsense ?! Printmonster 199 0 Mo 12.11.2007, 12:42
Umlaute falsch in DB gespeichert Simi 254 3 Sa 13.10.2007, 14:38
umlaute Thomas Till 268 2 Mi 25.07.2007, 00:12
Wieder Umlaute und PHP VoinG 6608 20 Sa 17.02.2007, 15:46
mod rewrite und Sonderzeichen / Umlaute edi 615 3 Di 13.02.2007, 23:13
logs Ordner ersetzen möglich? Brause 257 0 Di 30.01.2007, 22:05
umlaute in domains Christian 339 4 Do 25.01.2007, 14:24
Umlaute werden falsch dargestellt ? japsa 1338 4 Mo 22.01.2007, 10:04




Anzeige - [Hier werben / Mediadaten]



Anzeigen


[Hier werben / Mediadaten]