2 Stimmen

Standardmethode zur Reinigung eingehender Saiten?

Ich integriere ein paar externe Dienste, bei denen ich eine Datei über http herunterlade. Ich muss die Dateinamen konvertieren/bereinigen, bevor ich sie in meinem System verwenden kann. So habe ich Dinge wie diese in verschiedenen Teilen des Codes:

name = name.encode('UTF-8', 'ASCII-8BIT', invalid: :replace, undef: :replace, replace: '')
name = name.encode('UTF-8', 'ISO-8859-1', invalid: :replace, undef: :replace, replace: '')

In jedem Fall musste ich den Dienst fragen, welche Kodierung ich zu erwarten hatte.

Ist dies der einzige Weg, um dies zu gehen, oder gibt es eine Art von mehr Standard und generische Weise eine eingehende Zeichenfolge zu bereinigen?

0voto

aef Punkte 4208

In Ruby 1.9.x gibt es eine externe und eine interne Kodierung, die beide standardmäßig die globale Kodierung verwenden. Externe Dateien gelten als in der konfigurierten externen Kodierung und werden automatisch in die interne Kodierung konvertiert. Sie können diese Kodierungen global einstellen durch Encoding.default_external y Encoding.default_internal . Sie können sie für jede einzelne Datei als Argumente für den Befehl open Methode wie im folgenden Beispiel:

File.open('/path/to/some/file', 'r', external_encoding: 'US-ASCII', internal_encoding: 'UTF-8')

Beachten Sie, dass Sie auch jedes einzelne Element einzeln angeben können.

Voir dieser Blogbeitrag für weitere Informationen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X