2016-04-25 8 views
2

das folgende Beispiel Textzeile vor:iconv - translite wenn möglich, ansonsten lassen nicht umgesetzten

α Arietis, called Hamal, is the brightest star in Aries. Its traditional name is derived from the Arabic word for “lamb” or “head of the ram” (ras al-hamal).

Es verfügt über drei verschiedene UTF-8-Zeichen, die α, eine linke Smart Zitat, und ein richtiges intelligentes Zitat.

Mein Ziel ist es, so viel wie möglich von UTF-8 in reguläres ASCII zu transkribieren, aber nicht konvertierbare Zeichen so zu lassen, wie sie sind. (. In dem obigen Beispieltext, die typografischen Anführungszeichen können " transkribiert werden, aber die α nicht)

Mein aktueller Befehl lautet:

iconv -f UTF-8 -t ASCII//TRANSLIT < iconv.sample 

vermag jedoch nicht die α zu konvertieren und endet mit iconv: (stdin):1:0: cannot convert .
Wenn ich das Ziel //IGNORE hinzufüge oder die Option -c verwende, wird die α insgesamt gelöscht.

Wie kann ich transliterieren, wenn möglich, aber fallback auf das ursprüngliche Eingabezeichen, wenn nicht?

Antwort

2

Ich bin mir nicht sicher, es ist möglich, wenn iconv verwenden, da die Ausgabecodierung wird werden müssen angepasst (das heißt, wenn Sie ASCII angeben, es ist nur ASCII ausspucken würde, egal was).

Wenn Sie uconv zur Verfügung haben, können Sie Umschrift Operationen angeben weg von Ausgabecodierung:

uconv -f "UTF-8" -t "UTF-8" -x "Latin-ASCII" 

Als Beispiel:

$ echo "α Arietis “head of the ram”" | uconv -f "UTF-8" -t "UTF-8" -x "Latin-ASCII" 
α Arietis "head of the ram" 
+0

Das ist genau das, was ich suche! Ich hatte keine Ahnung, dass Uconv sogar ein Dienstprogramm war. –

+0

Ich bin ein bisschen spät, dies zu überprüfen, aber es scheint, dass 'Latin-ASCII' die schlechte Angewohnheit hat, akzentuierte Zeichen in unbetonten ASCII umzuwandeln. Die korrekte Transliteration scheint "-x" zu sein: [[: Interpunktion:] [: Symbol:]] Latein-ASCII; '". Dadurch wird nur die 'Latin-ASCII'-Transformation auf Interpunktion und Symbole angewendet. –