2012-08-19 5 views
6

Ich benutze librets, um Daten von meinem RETS Server abzurufen. Irgendwie funktioniert die Methode "Librets Encoding" nicht und ich erhalte seltsame Zeichen in meiner Ausgabe. Ich habe bemerkt, dass Zeichen wie "ersetzt durch" ersetzt werden. Ich kann keine Korrektur für die Libe- bets finden, daher habe ich mich entschlossen, solche Daten nach dem Herunterladen von Daten zu ersetzen. Was ich brauche, ist eine Liste solcher Garbage-Strings und ihrer entsprechenden Zeichen. Ich habe dafür gegoogelt, aber keine Ressource gefunden. Kann mir jemand auf die Liste solcher Müllbriefe und ihre tatsächlichen Werte oder ein Stück Code hinweisen, der einen solchen Brief erzeugen kann.Liste von Müllzeichen wie '

thanx

Antwort

10

Suche nach dem Begriff "UTF-8", denn das ist, was Sie sehen.

UTF-8 ist eine Möglichkeit, Unicode-Zeichen als eine Folge von Bytes darzustellen. ("Unicode-Zeichen" sind die vollständige Palette von Buchstaben und Symbolen, die in allen menschlichen Sprachen verwendet werden.) Normalerweise wird ein Unicode-Zeichen in UTF-8 zu 1, 2 oder 3 Byte. Wenn diese Bytes (Zahlen von 0 bis 255) mit dem normalerweise von Windows verwendeten Zeichensatz angezeigt werden, erscheinen sie als "Müll" - in diesem Fall 3 "Müllbuchstaben", die wirklich die 3 Bytes einer UTF-8-Codierung sind . In Ihrem Beispiel haben Sie mit dem intelligenten Anführungszeichen begonnen. Seine Darstellung in Unicode ist die Nummer oder U + 2019 (2019 ist das hexadezimale für 8217). (Suche nach "Unicode" für eine vollständige Liste von Unicode-Zeichen und die Zahlen.) Die UTF-8-Darstellung der Zahl 8217 ist die Drei-Byte-Sequenz 226, 128 , . Und wenn Sie diese drei Bytes als Zeichen anzeigen, indem Sie die Windows-Zeichencodierung "CP-1252" verwenden (die übliche Art, Text in Windows in den USA anzuzeigen), werden sie als ’ angezeigt. (Suchen Sie nach "CP-1252", um eine Tabelle mit Bytes und Zeichen zu sehen.)

Ich habe keine Liste für Sie. Aber Sie könnten einen erstellen, wenn Sie ein Programm in einer Sprache geschrieben haben, die Unicode und UTF-8 unterstützt. Alles, was ich tun kann, ist zu erklären, was du siehst.

Wenn es eine Möglichkeit gibt, Libetrets mitzuteilen, UTF-8 beim Herunterladen zu verwenden, könnte das automatisch Ihr Problem lösen. Ich weiß nichts über Librets, aber jetzt, wo Sie den Begriff "UTF-8" kennen, können Sie vielleicht Fortschritte machen.

+2

+1 Übereinstimmen und betonen: Wahrscheinlich tut der Server das Richtige, und Sie müssen entweder Ihren Code oder Ihre Werkzeuge anpassen. Im einfachsten Fall ist es vielleicht nur erforderlich, das Anzeigewerkzeug zu konfigurieren, mit dem Sie die Ergebnisse überprüfen, um UTF-8 anstelle von CP-1252 oder ISO-8859-1 oder was auch immer anzuzeigen. – tripleee

+0

Einverstanden. Wenn Sie die Ausgabe mit einem Webbrowser wie Internet Explorer anzeigen, können Sie den Zeichensatz mit einer einfachen Menüoption ändern. (Gehen Sie zu "Ansicht" und wählen Sie "Encoding", dann wechseln Sie von "Westeuropäisch (Windows)" zu "UTF-8". Sie können auch die "Auto-Select" -Option deaktivieren.) Wenn die Codierung eingestellt ist In UTF-8 nimmt der Internet Explorer die 3 "Müllzeichen", interpretiert sie als UTF-8-Bytes, konvertiert sie zurück in ein Unicode-Zeichen und zeigt das Unicode-Zeichen an. In diesem Fall müssen sich die Librets nicht ändern. Sie ändern nur die Art, wie Sie die Ausgabe anzeigen. – librik

+0

Danke für die Klärung. LIBRETS bietet eine Methode zum Überschreiben der Codierung, aber es scheint, dass es nicht funktioniert. Das Librets-Forum ist erbärmlich und erlaubt niemandem, Fragen zu stellen, es sei denn, sie genehmigen den registrierten Benutzer und sie haben mich auch nach einem Monat nicht genehmigt. – ZafarYousafi

0

Frage Erinnerung:.

“... Ich bemerkte Zeichen wie ''‘ mit â € ™ ersetzt wird ... i beschlossen, solchen Müll characeters ersetzen mit Istwerten nach dem Herunterladen von Daten Was Ich brauche ist eine Liste von solchen Garbage String und ihre äquivalenten Zeichen. "

Genau mit diesem Teil zu tun: „Was ich brauche, ist eine Liste solchen Müll-String und ihre äquivalent Zeichen“

PHP, können Sie diese Zeichen und ihre Gleichwertigkeit erzeugen. Es ist unpraktisch, mit allen 1.111.998 Unicode-Punkten oder 109.449 Utf8-Symbolen zu arbeiten. Sie können den ASCII-Bereich in der folgenden Schleife zwischen & # 128 und & # 258 oder einem anderen Bereich verwenden, der für Ihren Kontext relevanter ist.

<?php 
    for ($i=128; $i<258; $i++) 
    $tmp1 .= "<tr><td>".htmlentities("&#$i;")."</td><td>".html_entity_decode("&#".$i.";",ENT_NOQUOTES,"utf-8")."</td><td>&#".$i.";</td></tr>"; 

    echo "<table border=1> 
    <tr><td>&#</td><td>&quot;Garbage&quot;</td><td>symbol</td></tr>"; 
    echo $tmp1; 
    echo "</table>"; 
?> 

Aus Erfahrung in einem ASCII-Kontext, die meisten "Müll" Symbole im Bereich & # 128 bis & # 257 + (selten) & # 8129 bis & # 8246 stammen.

Damit die "Müll" -Symbole angezeigt werden, muss der html-Seitenzeichensatz auf iso-1 oder den anderen Zeichensatz gesetzt werden, der das Problem verursacht hat. Sie werden nicht angezeigt, wenn der Zeichensatz auf utf-8 eingestellt ist.

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 

.

„i beschlossen, solchen Müll characeters mit Istwerten zu ersetzen, nachdem das Herunterladen von Daten“

Sie können den „Müll“ mit php utf8_decode() rückgängig zu machen, die eigentlich mehr „Müll“ auf schaffen würden schon "Müll". Aber Sie können die einfache und schnelle Suche und ersetzen php str_replace() -Funktion verwenden.

Zuerst generieren Sie 2 Arrays für jede Gruppe von "Müll" -Symbole, die Sie ersetzen möchten. Das erste Array ist der Suchbegriff:

<?php 
    //ISO 8859-1 (Latin-1) special chars are found in the range 128 to 257 
    $tmp1 = "\$SearchArr = array("; 
    for ($i=128; $i<258; $i++) 
    $tmp1 .= "\"".html_entity_decode("&#".$i.";",ENT_NOQUOTES,"utf-8")."\", "; 
    $tmp1 = substr($tmp1,0,strlen($tmp1)-2);//erases last comma 
    $tmp1 .= ");"; 
    $tmp1 = htmlentities($tmp1,ENT_NOQUOTES,"utf-8"); 
?> 

Das zweite Array ist der ersetzen Begriff:

<?php 
    //Adapt for your relevant range. 
    $tmp2 = "\$ReplaceArr = array(\n"; 
    for ($i=128; $i<258; $i++) 
    $tmp2 .= "\"&#".$i.";\", "; 
    $tmp2 = substr($tmp2,0,strlen($tmp2)-2);//erases last comma 
    $tmp2 .= ");"; 

    echo $tmp1."\n<br><br>\n"; 
    echo $tmp2."\n"; 
?> 

Jetzt haben Sie zwei Arrays bekommen, die Sie kopieren und einfügen können, verwenden und reinigen Wiederverwendung zu alle Ihre infizierten Strings wie folgt aus:

$InfectedString = str_replace($SearchArr,$ReplaceArr,$InfectedString); 

Hinweis: utf8_decode() ist keine Hilfe für die Reinigung von „Müll“ Symbole auf. Aber es kann verwendet werden, um weitere Verunreinigungen zu verhindern. Alternativ kann eine mb_-Funktion nützlich sein.

Verwandte Themen