Habe leider nur die Möglichkeit über Cywin gefunden, und da funktioniert
es nicht. Angeblich soll es mit
find . -name "*.php" -exec iconv -f ISO-8859-1 -t UTF-8 {} -o
../newdir_utf8/{} \;
gehen, aber kommt bei mir nur eine Fehlermeldung: no such file or
directory, bzw. wird die ausgabe nur angezeigt nicht aber abgespeichert.
Gibt es ein Windows-Programm das das kann? Wenn ich mit dem Editor die
Dateien öffne und beim Speichern UTF-8 einstelle dann paßt alles, nur
ist es etwas mühsam das mit jeder Datei zu machen.
Sofern die PHP-Skripte in reinem Textformat vorliegen, könnte Dir dieses
Skript die Arbeit erleichtern:
'######################### Convert2Uni.vbs ############################
' von h.r.roesler
Option Explicit
' konvertiert ANSI-Textdateien ins Unicode-Format für PHP-Dateien
' Beim Aufruf müssen 2 Parameter angegeben werden:
' 1. Der Name der Ordner-Hierarchie, die konvertiert werden soll
' 2. Der Name des Ausgabe-Ordners
' Beispiel: Convert2UTF8 H:\ Q:\PHP
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const EXT = "php"
Dim fso, strStartFolder, strOutFolder
Set fso = CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count > 1 Then
strStartFolder = WScript.Arguments(0)
strOutFolder = WScript.Arguments(1)
If Not(fso.FolderExists(strOutFolder)) Then
Wscript.Echo "Erzeuge neuen Ordner:" & vbCRLF & strOutFolder
fso.CreateFolder strOutFolder
End If
Search EXT, fso.GetFolder(strStartFolder), strOutFolder
End If
Sub Search(strExt, fsoFolder, strNewFolder)
Dim fsoFile, fsoSubFolder
On Error Resume Next
For Each fsoFile In fsoFolder.Files
If Not(IsEmpty(fsoFile)) Then
If LCase(fso.GetExtensionName(fsoFile.Name) = strExt) Then
WScript.Echo "Datei " & fsoFile.Path & _
" wird konvertiert."
Convert fsoFile, fso.BuildPath(strNewFolder, _
fso.GetFileName(fsoFile.ParentFolder))
End If
End If
Next
For Each fsoSubFolder In fsoFolder.SubFolders
Search strExt, fsoSubFolder, strNewFolder
Next
End Sub
Sub Convert(fsoFile, strOutFolder)
Dim fsoTxt, strOutFile, fsoOutFile
If Not(fso.FolderExists(strOutFolder)) Then
Wscript.Echo "Erzeuge neuen Ordner:" & vbCRLF & strOutFolder
fso.CreateFolder strOutFolder
If Not(fso.FolderExists(strOutFolder)) Then WScript.Quit
End If
strOutFile = fso.BuildPath(strOutFolder, fsoFile.Name)
Set fsoTxt = fsoFile.OpenAsTextStream(ForReading)
Set fsoOutFile = fso.CreateTextFile(strOutFile, True, vbTrue)
fsoOutFile.Write fsoTxt.ReadAll
fsoTxt.Close
fsoOutFile.Close
WScript.Echo "Datei " & fsoFile.Name & " wurde konvertiert."
End Sub
--
ЯR
>> Gibt es ein Windows-Programm das das kann? Wenn ich mit dem Editor die
>> Dateien öffne und beim Speichern UTF-8 einstelle dann paßt alles, nur
>> ist es etwas mühsam das mit jeder Datei zu machen.
>
> Sofern die PHP-Skripte in reinem Textformat vorliegen, könnte Dir dieses
> Skript die Arbeit erleichtern:
Oh danke, leider klappt es nicht ganz. Die Dateien die ich dann auf den
neuen Server lade werden im Browser nur als Text dargestellt.
Aber wenn Du den Fehler noch beheben kannst ist das Skript sicher
brauchbar! Zu beachten wär noch dass die Verzeichnisstruktur erhalten
bleibt, gibt es mehrere Verzeichnisebenen so gibt es beim Export dieses
Skripts nachher nur eine.
Ich habe mir momentan mal so geholfen daß ich mit Inforapid Search &
Replace einfach alle Umlaute von zB ö in ö umgewandelt habe, damit
geht es dann auch. Ist halt keine elegante Lösung.
> Rüdiger Rösler schrieb:
>
>>> Gibt es ein Windows-Programm das das kann? Wenn ich mit dem Editor
>>> die Dateien öffne und beim Speichern UTF-8 einstelle dann paßt
>>> alles, nur ist es etwas mühsam das mit jeder Datei zu machen.
>>
>> Sofern die PHP-Skripte in reinem Textformat vorliegen, könnte Dir
>> dieses Skript die Arbeit erleichtern:
>
> Oh danke, leider klappt es nicht ganz. Die Dateien die ich dann auf
> den neuen Server lade werden im Browser nur als Text dargestellt.
Ja, ich habe zu spät erkannt, dass sie ins Unicode-Format umgewandelt
wurden. Ursprünglich dachte ich, es handle sich um UTF-8.
> Aber wenn Du den Fehler noch beheben kannst ist das Skript sicher
> brauchbar! Zu beachten wär noch dass die Verzeichnisstruktur erhalten
> bleibt, gibt es mehrere Verzeichnisebenen so gibt es beim Export
> dieses Skripts nachher nur eine.
Also, es tut mir leid, aber die Ordnerstruktur kann ich jetzt nicht
bewahren. :-) Dazu müsste ich diese Struktur erst mal sehen.
> Ich habe mir momentan mal so geholfen daß ich mit Inforapid Search &
> Replace einfach alle Umlaute von zB ö in ö umgewandelt habe,
> damit geht es dann auch. Ist halt keine elegante Lösung.
Also schön, ich war auf Diebestour im Netz und habe das Skript etwas
angepasst. Ich muss allerdings dazu sagen, ich kenne mich damit schlecht
aus, aber probier es mal. Diese Datei ist allerdings im WSF-Format, also
aufpassen:
<job>
<reference object="Scripting.FileSystemObject" />
<object id="fso" progId="Scripting.FileSystemObject" />
<reference object="ADODB.Stream" />
<object id="stmANSI" progId="ADODB.Stream" />
<object id="stmUTF8" progId="ADODB.Stream" />
<object id="stmNoBOM" progid="ADODB.Stream" />
<script language="VBScript">
'########################## ANSI2UTF-8.wsf ############################
' von h.r.roesler
' portions inspired by dilettante
Option Explicit
' konvertiert ANSI-Textdateien ins UTF8-Format für PHP-Dateien
' Beim Aufruf müssen 2 Parameter angegeben werden:
' 1. Der Name der Ordner-Hierarchie, die konvertiert werden soll
' 2. Der Name des Ausgabe-Ordners
' Beispiel: ANSI2UTF-8 H:\ Q:\PHP
Const EXT = "php"
Dim strStartFolder, strOutFolder
If WScript.Arguments.Count > 1 Then
strStartFolder = WScript.Arguments(0)
strOutFolder = WScript.Arguments(1)
Search EXT, fso.GetFolder(strStartFolder), strOutFolder
End If
Sub Search(strExt, fsoFolder, ByVal strNewFolder)
Dim fsoFile, fsoSubFolder, strFolder
If Not(fso.FolderExists(strNewFolder)) Then
fso.CreateFolder strNewFolder
End If
On Error Resume Next
For Each fsoFile In fsoFolder.Files
If Not(IsEmpty(fsoFile)) Then
If LCase(fso.GetExtensionName(fsoFile.Name) = strExt) Then
Convert fsoFile, fso.BuildPath(strNewFolder, _
fsoFile.Name)
End If
End If
Next
If strOutFolder <> strNewFolder And _
fso.GetFolder(strNewFolder).Files.Count = 0 Then
fso.DeleteFolder strNewFolder
End If
For Each fsoSubFolder In fsoFolder.SubFolders
strNewFolder = fso.BuildPath(strOutFolder, _
fso.GetFileName(fsoSubFolder))
Search strExt, fsoSubFolder, strNewFolder
Next
End Sub
Sub Convert(fsoFile, strOutFile)
' this code was stolen from:
' http://www.tek-tips.com/viewthread.cfm?qid=1392917
' the author has published it under the name of dilettante
WScript.Echo "Datei " & fsoFile.Path & " wird konvertiert."
With stmANSI
.Open
.Type = adTypeBinary
.LoadFromFile fsoFile.Path
.Type = adTypeText
.LineSeparator = adCRLF
.Charset = "x-ansi" 'Same as Windows-1252.
With stmUTF8
.Open
.Type = adTypeText
.LineSeparator = adLF
.CharSet = "UTF-8"
'Use Line operations to obtain LineSeparator action.
Do Until stmANSI.EOS
.WriteText stmANSI.ReadText(adReadLine), adWriteLine
Loop
stmANSI.Close
.SaveToFile strOutFile, adSaveCreateOverWrite
.Close
End With
End With
WScript.Echo "Datei " & fsoFile.Name & " wurde konvertiert."&vbCRLF
End Sub </script>
</job>
--
ЯR
> Oh danke, leider klappt es nicht ganz. Die Dateien die ich dann auf
> den neuen Server lade werden im Browser nur als Text dargestellt.
Ja, ich habe zu spät erkannt, dass sie ins Unicode-Format umgewandelt
wurden. Ursprünglich dachte ich, es handle sich um UTF-8.
> Aber wenn Du den Fehler noch beheben kannst ist das Skript sicher
> brauchbar! Zu beachten wär noch dass die Verzeichnisstruktur erhalten
> bleibt, gibt es mehrere Verzeichnisebenen so gibt es beim Export
> dieses Skripts nachher nur eine.
Also, es tut mir leid, aber die Ordnerstruktur kann ich jetzt nicht
bewahren. Vielleicht kannst Du selber mal etwas entwerfen?
> Ich habe mir momentan mal so geholfen daß ich mit Inforapid Search &
> Replace einfach alle Umlaute von zB ö in ö umgewandelt habe,
> damit geht es dann auch. Ist halt keine elegante Lösung.
Also schön, ich war auf Diebestour im Netz und habe das Skript etwas
angepasst. Ich muss allerdings dazu sagen, ich kenne mich damit schlecht
aus, aber probier es mal. Diese Datei ist allerdings im WSF-Format, also
aufpassen:
<job>
<reference object="Scripting.FileSystemObject" />
<object id="fso" progId="Scripting.FileSystemObject" />
<reference object="ADODB.Stream" />
<object id="stmANSI" progId="ADODB.Stream" />
<object id="stmUTF8" progId="ADODB.Stream" />
<script language="VBScript">
'########################## ANSI2UTF-8.wsf ############################
' von h.r.roesler
' portions inspired by dilettante
Option Explicit
' konvertiert ANSI-Textdateien ins UTF8-Format für PHP-Dateien
' Beim Aufruf müssen 2 Parameter angegeben werden:
' 1. Der Name der Ordner-Hierarchie, die konvertiert werden soll
' 2. Der Name des Ausgabe-Ordners
' Beispiel: ANSI2UTF-8 H:\ Q:\PHP
Const EXT = "php"
Dim strStartFolder, strOutFolder
If WScript.Arguments.Count > 1 Then
strStartFolder = WScript.Arguments(0)
strOutFolder = WScript.Arguments(1)
Search EXT, fso.GetFolder(strStartFolder), strOutFolder
End If
Sub Search(strExt, fsoFolder, ByVal strNewFolder)
Dim fsoFile, fsoSubFolder, strFolder
If Not(fso.FolderExists(strNewFolder)) Then
fso.CreateFolder strNewFolder
End If
On Error Resume Next
For Each fsoFile In fsoFolder.Files
If Not(IsEmpty(fsoFile)) Then
If LCase(fso.GetExtensionName(fsoFile.Name) = strExt) Then
Convert fsoFile, fso.BuildPath(strNewFolder, _
fsoFile.Name)
End If
End If
Next
If strOutFolder <> strNewFolder And _
fso.GetFolder(strNewFolder).Files.Count = 0 Then
fso.DeleteFolder strNewFolder
End If
For Each fsoSubFolder In fsoFolder.SubFolders
strNewFolder = fso.BuildPath(strOutFolder, _
fso.GetFileName(fsoSubFolder))
Search strExt, fsoSubFolder, strNewFolder
Next
End Sub
Sub Convert(fsoFile, strOutFile)
' parts of this code were stolen from:
' http://www.tek-tips.com/viewthread.cfm?qid=1392917
' the author has published it under the name of dilettante
WScript.Echo "Datei " & fsoFile.Path & " wird konvertiert."
With stmANSI
.Open
.LoadFromFile fsoFile.Path
.Type = adTypeText
.LineSeparator = adCRLF
.Charset = "x-ansi" 'Same as Windows-1252.
With stmUTF8
.Open
.Type = adTypeText
.LineSeparator = adLF
.CharSet = "UTF-8"
'Use Line operations to obtain LineSeparator action.
Do Until stmANSI.EOS
.WriteText stmANSI.ReadText(adReadLine), adWriteLine
Loop
.SaveToFile strOutFile, adSaveCreateOverWrite
.Close
End With
.Close
End With
WScript.Echo "Datei " & fsoFile.Name & " wurde konvertiert."&vbCRLF
End Sub </script>
</job>
Ich hatte jetzt allerdings nicht viel Zeit, den Kode zu testen, beim
ersten Anblick sah es nach UTF-8 aus. Beschwerden bitte schriftlich an
die Beschwerde-Abteilung. 8-)
--
ЯR