Lesen ansi-Datei und konvertiere zu UTF-8 string
Gibt es eine Möglichkeit dies mit PHP?
Die Daten werden eingefügt, sieht gut aus, wenn ich drucken Sie es aus.
Aber wenn ich stecken Sie es in der Datenbank das Feld leer ist.
BTW,
versuchen Sie es mit mysql_real_escape_string() php.net/manual/en/function.mysql-real-escape-string.php vielleicht ist der string eingefügt werden soll, enthält Zeichen, die in meine MySQL
ich lese den string aus der txt-Datei und feststellen, dass einige von Ihnen kehren ansii einige von Ihnen kehren leer von mit mb_detect_encoding($data), keine Lösung
Es gibt nicht so etwas wie
ANSI
!= ASCII
.versuchen Sie es mit mysql_real_escape_string() php.net/manual/en/function.mysql-real-escape-string.php vielleicht ist der string eingefügt werden soll, enthält Zeichen, die in meine MySQL
ich lese den string aus der txt-Datei und feststellen, dass einige von Ihnen kehren ansii einige von Ihnen kehren leer von mit mb_detect_encoding($data), keine Lösung
Es gibt nicht so etwas wie
ANSII
.InformationsquelleAutor user192344 | 2011-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
oder
Seltsame Sache ist, dass Sie am Ende mit einem leeren string in die DB. Ich kann verstehen, werden Sie am Ende mit einigen garbarge in deiner DB, aber auch gar nichts (leere Zeichenfolge) ist seltsam.
Tippte ich einfach in meiner Konsole:
Zeigte es mir:
Dies sind die möglichen Werte für IHRE AKTUELLEN ZEICHENSATZ
Wie bereits erwähnt, wenn Sie Ihre Eingabe-Zeichenfolge enthält, die chars sind nicht erlaubt, UTF, brauchen Sie nicht zu konvertieren, nichts.
Ändern von UTF-8 in UTF-8//TRANSLIT, wenn Sie nicht wollen, um chars weglassen, sondern ersetzen Sie Sie mit einem look-a-like (wenn Sie nicht in der UTF-8 eingestellt)
utf8_encode
konvertiert ISO 8859-1 nach UTF-8. Also kann es nur verwendet werden, wenn die Eingabe-Kodierung ist ISO 8859-1ich versuche, $Daten = iconv('ASCII', 'UTF-8', $data); out Nachricht: iconv() [function.iconv]: Entdeckt eine illegale Zeichen in Eingangs-string
ASCII ist eine Teilmenge von UTF-8. Wenn die Daten tatsächlich war ASCII (was nicht ist, wie die Fehlermeldung besagt), die Sie nicht brauchen, um zu konvertieren.
ich lese den string aus der txt-Datei und feststellen, dass einige von Ihnen kehren ansii einige von Ihnen kehren leer von mit mb_detect_encoding($data), keine Lösung
Bei der Rückgabe von false, wird einfach die Datei öffnen und mit Ihren Augen zu sehen, für Müll. Entfernen Sie es von hand, und versuchen Sie es erneut. Wenn das funktioniert, könnten Sie schreiben, eine filter-Funktion ausgeführt werden, bevor die Erkennung der Codierung.
InformationsquelleAutor Mark Bekkers
"ANSI" ist nicht wirklich ein charset. Es ist ein kurzer Weg, zu sagen: "was auch immer-Zeichensatz ist der Standard in der computer schafft, dass die Daten". So haben Sie eine doppelte Aufgabe:
Für #2, normalerweise bin ich zufrieden mit
iconv()
aberutf8_encode()
können auch die Arbeit machen, wenn Quelle Daten geschieht, verwenden ISO-8859-1.Update
Sieht es aus wie Sie nicht wissen, welche charset Ihre Daten verwenden. In einigen Fällen können Sie es herausfinden wenn Sie das Land kennen und die Sprache des Benutzers (z.B. Spanien/Spanisch) durch die Standard-Codierung von Microsoft Windows in einem solchen Gebiet.
+1 für ANSI Kommentar 🙂
Der OP gesagt, Sie über die return-Werte, die er bekam von mb_detect_encoding.
mb_detect_encoding()
nicht wirklich tun, was die meisten Leute denken. In der Tat ist es nahe zu nutzlos. Bei den meisten, Sie können es verwenden, um eine Unterscheidung zwischen UTF-8 und UTF-16, aber Sie müssen Sie richtig konfigurieren.InformationsquelleAutor Álvaro González
Vorsichtig sein, mit
iconv()
können false zurückgeben, wenn die Konvertierung fehlschlägt.Ich bin auch ein etwas ähnliches problem, einige Zeichen aus dem chinesischen alphabet verwechselt
\n
wenn die Datei in UNICODE kodiert ist, nicht aber, wenn es ist UFT-8.Zurück zu Ihrem problem, stellen Sie sicher, dass die Codierung der Datei ist die gleiche, mit der Sie Ihre Datenbank. Auch mit
utf-8_encode()
auf eine bereits utf-8-text kann unangenehme Folgen. Versuchen Sie es mitmb_detect_encoding()
zu sehen, die Codierung der Datei, aber leider wird dieser Weg nicht immer funktioniert. Gibt es keine einfache Lösung für die Zeichenkodierung von dem, was ich sehen kann 🙁InformationsquelleAutor Victor Priceputu