ANSI文字エンコーディングで保存された一連のテキストファイルをプログラムまたはスクリプトを介してUnicodeエンコーディングに変換する方法を知っていますか?
メモ帳でファイルを開いてUnicodeファイルとして保存することを選択したときと同じことをしたいと思います。
ANSI文字エンコーディングで保存された一連のテキストファイルをプログラムまたはスクリプトを介してUnicodeエンコーディングに変換する方法を知っていますか?
メモ帳でファイルを開いてUnicodeファイルとして保存することを選択したときと同じことをしたいと思います。
これはうまくいくかもしれませんが、現在のフォルダ内のすべてのファイルを取得することに注意してください。
Get-ChildItem | Foreach-Object { $c = (Get-Content $_); `
Set-Content -Encoding UTF8 $c -Path ($_.name + "u") }
簡潔にするためにエイリアスを使用するのと同じこと:
gci | %{ $c = (gc $_); sc -Encoding UTF8 $c -Path ($_.name + "u") }
Steven Murawskiは、Out-File
代わりに使用することを提案しています。両方のコマンドレットの違いは次のとおりです。
Out-File
受信した入力をフォーマットしようとします。Out-File
のデフォルトのエンコーディングはUnicodeベースですSet-Content
が、システムのデフォルトを使用します。test.txt
どちらの場合もファイルが存在しないと仮定した例を次に示します。
PS> [system.string] | Out-File test.txt
PS> Get-Content test.txt
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
# test.txt encoding is Unicode-based with BOM
PS> [system.string] | Set-Content test.txt
PS> Get-Content test.txt
System.String
# test.txt encoding is "ANSI" (Windows character set)
実際、特定のUnicodeエンコーディングが必要ない場合は、次のようにしてテキストファイルをUnicodeに変換することもできます。
PS> Get-Content sourceASCII.txt > targetUnicode.txt
Out-File
ある種の「オプションのパラメータを持つリダイレクト演算子」です。
最も簡単な方法は、Get-Content 'path/to/text/file' | out-file 'name/of/file'.
Out-File には -encoding パラメータがあり、そのデフォルトは Unicode です。
それらのバッチをスクリプト化したい場合は、次のようにすることができます
$files = get-childitem 'directory/of/text/files'
foreach ($file in $files)
{
get-content $file | out-file $file.fullname
}
System.IO.StreamReader(ファイルの内容を読み取るには)クラスをSystem.Text.Encoding.Encoding(エンコードを行うEncoderオブジェクトを作成するには)基本クラスと一緒に使用します。
新しいテキスト ファイルを作成し、元の各バイトの前に '\0' を配置して、元のファイルのバイトを新しいファイルに書き込むことができます (元のテキスト ファイルが英語であると仮定します)。
擬似コード...
薄暗いシステム、ファイル、コンテンツ、newFile、oldFile
Const ForReading = 1、ForWriting = 2、ForAppending = 3 Const AnsiFile = -2、UnicodeFile = -1
システムを設定=CreateObject( "Scripting.FileSystemObject .. ..
Set file = system.GetFile( "text1.txt")
oldFile = file.OpenAsTextStream(ForReading、AnsiFile)を設定します
内容=oldFile.ReadAll()
oldFile.Close
system.CreateTextFile "text1.txt"
Set file = system.GetFile( "text1.txt")
newFile = file.OpenAsTextStream(ForWriting、UnicodeFile)を設定します
newFile.Writeの内容
newFile.Close
このアプローチがうまくいくことを願っています。
iconv を使用できます。Windows では、Cygwin で使用できます。
iconv -f from_encoding -t to_encoding file