PHP string konvertieren von windows-1250 auf utf-8

Ich krabbele windows-1250 Website (meta http-equiv="Content-Type" Content="text/html; charset=windows-1250").

Da meine Datenbank ist utf-8, ich muss zur Konvertierung der Daten zu utf-8.

Für die Arbeit, die ich habe versucht, iconv ("windows-1250', 'UTF-8', $s); es gibt "ÄŚarls" statt "Čarls".

Es gibt ein wenig bessere Ergebnisse, wenn die Kodierungen wechseln die Plätze iconv('UTF-8', 'windows-1250', $s); gibt "Èarls" statt "Čarls". Seltsam.

Haben Sie eine Idee, wie kann ich die Konvertierung in utf-8?

Vielen Dank im Voraus.

  • Sind Sie 1000% sicher, dass die Website, die Sie kriechen windows-1250? Stellen Sie sicher, dass im browser (siehe die Codierung wechselt)? Was ist Ihre Ausgabe-Kodierung?
  • Wie geben Sie die Zeichenkodierung der Ausgabe?
  • Wenn Sie sagen, "gibt", was genau meinst du? Können Sie schneiden Sie die Datenbank aus der Gleichung heraus und drucken Sie die konvertierte Ergebnis aus PHP-code, mit dem Sie Ihre eigene Seite-Codierung UTF-8? Oder haben Sie es bereits getan?
  • Wenn ich sage gibt, ich meine, was ist geschrieben in der Datenbank (das ist für mich am wichtigsten). Gedruckt auf utf-8-Seite gibt es "ÄŚarls" iconv ("windows-1250', 'UTF-8', $s) oder "�arls" (iconv('UTF-8', 'windows-1250', $s)). Ich erwarte, dass "Čarls" die ist von der ursprünglichen Website gecrawlt.
  • Allgemeine check-Liste: 1. mysql-Tabelle, schema zu verwenden, der utf-8-2. mysql-clients Verbindung auf utf-8 mysql --default-character-set=utf8 3. php mysqli_set_charset auf utf-8 4. html-Codierung auf utf-8-5. Kitt, emac Kunden... in utf-8
  • Alles ist bereits in utf-8 mit Ausnahme der Seite, die ich versuche zu kriechen 🙁
  • einige Bereich müssen übersehen, wie, wie man die Ergebnisse von mysql ? was ist die show variables like '%char%' zurück?
  • Einige Zeichen können nicht direkt codiert in utf-8 aus Fenster-1250. Versuchen zu konvertieren, die wenigen Zeichen, die Sie erwähnt in HTML-Entitäten. und dann auf utf-8.
  • alles ist utf8 außer character_set_server = latin1
  • Versucht iconv ("windows-1250', 'UTF-8', htmlentities($s)), dasselbe. Meinst du so?
  • zurück zu dieser Frage, wie Sie die Ergebnisse zurück, die von mysql? die mysql-client wird verwendet? wie Sie eine Verbindung zu mysql-client?
  • Ich benutze SQLYog. Es ist eingestellt auf utf-8 verwenden, da die Datenbank und alle Tabellen sind utf-8. Anderen utf-8-strings sichtbar sind ok, nur von dieser Seite sind Sie problematisch.
  • versuchen mb_detect_order(array('windows-1250', 'utf-8')); echo mb_detect_encoding(file_get_contents('YOUR_FILE')); Es sollte echo ASCII
  • bool(false)
  • mb_list_encodings() gibt Windows-1252, Windows-1254 Windows-1251, aber keine Windows-1250. Ich dachte, die haben nichts zu tun mit "iconv": P ich arbeite auf der lokalen windows-Maschine ist, ist ein Weg, um fügen Sie Fenster-1250 wenn das ein problem?
  • Wie ist das crawling getan ? Und die Ergebnisse zurück, die von print_r( mb_list_encodings() ); ?
  • new Zend_Http_Client(); $client->setUri($uri); $client->request()->getBody(); Ergebnis mb_list_encodings sollte nicht afect iconv().
  • Nicht zu sicher, Zend_Http_Client das Verhalten ändern? Von meiner Seite aus, ich habe keine windows-1250 unterstützen, aber wenn ich einfach nur das tun, file_get_contents und tun die iconv, es funktioniert. Und die mb_detect_encoding zurück ascii (was auch stimmt). So, vielleicht möchten Sie einen test starten mit einem einfachen file_get_contents und testen wieder die iconv?
  • Funktioniert es auf anderen windows-server ohne encoding-Konvertierung! Also, es muss was mit dem server-setup... mbstring-setup ist das gleiche, muss eine andere Sache.

InformationsquelleAutor umpirsky | 2010-11-25
Schreibe einen Kommentar