Moderne MS Windows-Programme und Dienstprogramme (wie SQL Server) erstellen Textdateien mit der Zeichencodierung UTF-16 LE (Little End).
Standardmäßig Unix-Dienstprogramme wie grep
interpretieren solche Dateien nicht als Textdateien und behandeln sie stattdessen als Binärdateien (Byteströme).
Wenn Sie einen Unix-Emulator laufen (zum Beispiel Cygwin), das iconv
Werkzeug verwendet werden, könnte dies zu einer anderen Kodierung zu konvertieren wie UTF-8, z.B.
iconv -f utf16le -t utf8 in.sql > out.sql
Da Sie bereits festgestellt, dass Sie die Datei öffnen in Vim haben, können Sie wieder öffnen diese Vim Befehl:
:set encoding=utf8
:e ++encoding=utf16le
Der erste Befehl verwendet wird, um Sicher, dass Unicode-Zeichen korrekt dargestellt werden können, wenn die Datei in einen Vim-Puffer geladen wird. Dies sollte nicht notwendig sein, da die Standardcodierung normalerweise auf UTF-8 eingestellt ist.
Vim erkennt die Datei nicht automatisch als in UTF-16LE codiert, sodass der zweite Befehl die Datei zur Bearbeitung erneut öffnet; Sie müssen ihm sagen, welche Zeichenkodierung verwendet werden soll, um den Bytestrom zu interpretieren, aus dem die Datei besteht. Weitere Informationen finden Sie unter http://vim.wikia.com/wiki/Reloading_a_file_using_a_different_encoding
Jetzt, da die Datei korrekt in einen Vim-Puffer geladen wird, können Sie die Option fileencoding
auf eine beliebige Zeichenkodierung setzen, mit der Sie die Datei speichern möchten.
Wie haben Sie das Skript erstellt? Es gibt eine ScriptingOptions ... Option, um die Kodierung für die Ausgabe zu setzen (https://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.scriptingoptions.encoding.aspx), aber ich bin es nicht Sehen Sie es in den SSMS-Optionen ausgesetzt. Mein Verdacht ist, dass die Datei UTF-16 ist und vim UTF-8 erwartet (oder interpretiert). –
Ich habe Tasks -> Generate Scripts –
Ich habe ein wenig Forschung und es scheint, dass dies eine langjährige Anfrage an MS (um zumindest die Benutzer die Möglichkeit, eine andere Codierung wählen). Sie könnten ein Powershell-Skript ausprobieren, in dem Sie ScriptingOptions.Encoding auf UTF-8 setzen können. Ansonsten mag ich den unten angegebenen vim-Tipp. –