2013-05-23 7 views
5

Ich importiere TXT-Datei von einem Remote-Server und speichere sie in einer Datenbank. Ich verwende zu diesem Zweck ein .Net-Skript. Manchmal bemerke ich ein unlesbares Wort/Zeichen (Ullerهkersvنgen) in den Dateien, was beim Speichern in der Datenbank ein Problem verursacht.Finden Sie Nicht-ASCII-Zeichen in einer Textdatei und konvertieren Sie sie in ihre Unicode-Entsprechung.

Ich möchte alle diese Zeichen filtern und sie in Unicode vor dem Speichern in der Datenbank konvertieren.

Hinweis: Ich habe viele ähnliche Beiträge durchgemacht, hatte aber kein Glück.

Ihre Hilfe in diesem Zusammenhang wird sehr geschätzt.

Danke.

+0

[Was jeder Programmierer absolut, positiv über Kodierungen und Zeichensätze wissen muss, um mit Text zu arbeiten] (http://kunststube.net/encoding/) – deceze

+0

@deceze, das ist keine Antwort auf meine Frage. Bitte nutzen Sie keine billigen Wege, um Traffic auf Ihre Seite zu bringen. Denken Sie immer, was der Opt benötigt und helfen Sie ihm kurze Wege. – Mehboob

+0

Wenn Sie Codierungen verstehen, wird die Antwort auf diese Frage deutlicher. Da ich nicht jedes Mal die Grundlagen von Kodierungen für alle wiederholen kann, habe ich diesen Artikel geschrieben und verlinkt. Ich habe kein besonderes Interesse daran, Traffic auf meine Seite zu bringen, es kostet mich nur mehr Geld, wenn ich es tue. Du sagst also, dass dieser Artikel dir keine neuen Informationen zur Verfügung gestellt hat und völlig außer Thema war? – deceze

Antwort

4

Sie müssen die Zeichencodierung der Daten kennen oder zumindest erraten, um sie richtig konvertieren zu können. Sie sollten also versuchen, Informationen über den Ursprung und das Format der Textdatei zu finden und sicherstellen, dass Sie die Datei in Ihrer Software richtig lesen.

Zum Beispiel, "Uller å kersv ن gen" sieht aus wie ein skandinavischer Name, mit skandinavischen Buchstaben darin, falsch interpretiert nach einer falschen Zeichencodierungsannahme oder wie durch eine falsche Zeichencodeumwandlung verursacht. Der erste arabische Buchstabe "" ist U+064 7 ARABISCHER BRIEF HEH. In der ISO-8859-6-Codierung ist es E7 (hex.); In Windows-1256 ist es E5. Da skandinavischer Text normalerweise in ISO-8859-1 oder Windows-1252 dargestellt wird (wenn Unicode-Kodierungen nicht verwendet werden), ist es natürlich, zu prüfen, was E7 und E5 in ihnen bedeuten: "ç" und "å". Aus sprachlichen Gründen ist Letzteres hier viel wahrscheinlicher. Der zweite arabische Buchstabe ist "ن" U + 0646 ARABIC LETTER NOON, der in Windows-1256 E4 ist. Und in ISO-8859-1 ist E4 "ä". Das macht Sinn: Das Wort ist "Ulleråkersvägen", ein echter schwedischer Straßenname (zumindest in Uppsala).

Also die Daten sind wahrscheinlich ISO-8859-1 oder Windows-1252 (Windows Latin 1) kodierten Text, falsch interpretiert als Windows-1256 (Windows Arabisch). Keine Konvertierung ist erforderlich; Sie müssen nur lesen die Daten als Windows-1252 codiert. (Nach dem Lesen kann es natürlich zu einer anderen Codierung umgewandelt werden.)

+0

Ja, Sie sind richtig 100%. "Uller å kersv ågen" ist gleich "Ulleråkersvägen". Wie können wir dies über ASP.Net tun, um solche Zeichen automatisch zu erkennen und entsprechend umzuwandeln? – Mehboob

+2

@Mehboob, können Sie nicht. In einigen Fällen können einige Heuristiken angewendet werden, aber das allgemeine Problem, die Zeichencodierung aus den Daten abzuleiten, erfordert menschlichen Intellekt und Verständnis sowie einige Erfahrung (und könnte unmöglich sein). –

+1

Können wir nicht mit einem regulären Ausdruck alle Nicht-ASCII-Zeichen abfangen und sie dann in Unicode konvertieren? – Mehboob

Verwandte Themen