Hallo,
oben war die Frage nach dem Einstellung des Encoding im Libname-Statement.
Das geht so:
libname <logischer_name> "<physikalischer_Pfad>" outencoding="utf-8";
z.B.:
libname DemoLib "/tmp/demo" outencoding="utf-8";
oder
libname DemoLib "C:\temp\demo" outencoding="latin1";
Wenn das Encoding in dem Libname-Befehl nicht zur aktuellen Session passt, dann versucht SAS die Daten entsprechend zu konvertieren. Das klappt mehr oder weniger gut.
Gut klappt es bei den einfachen Fällen, wie äöüund ß oder auch éèê usw..
Schlecht klappt es bei den exotischen Fällen wie „Text“ (Luxus-Gänsefüßchen) oder – (Luxus-Bindestrich bzw. Gedankenstrich, z.B. aus Word). Die könnte man mit etwas gutem Willen noch konvertieren, bisher kommt dann ein Fehler, s.u..
Gar nicht geht die Umwandlung z.B. bei den slawischen Akzenten wie z.B. Š oder Č. Leider ist SAS dann mit dieser Umwandlung dermaßen überfordert, dass ein ERROR im Log gemeldet wird und der Data-Step die Bearbeitung abbricht. Aber ohne die Info, wo das Problem liegt, z.B. in welchen Datensatz. Der Log enthält dann nur den Text:
ERROR: Some character data was lost during transcoding in the data set libref.datasetname. Either the data contains characters that are not representable in the new encoding or truncation occurred during transcoding.
Die Note 52716 beschreibt das Problem, die Lösung passt leider nicht immer, z.B. nicht bei uns.
Gruß Hans
... View more