6

ANSI文字エンコーディングで保存された一連のテキストファイルをプログラムまたはスクリプトを介してUnicodeエンコーディングに変換する方法を知っていますか?

メモ帳でファイルを開いてUnicodeファイルとして保存することを選択したときと同じことをしたいと思います。

4

6 に答える 6

13

これはうまくいくかもしれませんが、現在のフォルダ内のすべてのファイルを取得することに注意してください。


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ある種の「オプションのパラメータを持つリダイレクト演算子」です。

于 2009-02-07T00:13:20.767 に答える
4

最も簡単な方法は、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
}
于 2009-02-06T14:19:25.147 に答える
0

System.IO.StreamReader(ファイルの内容を読み取るには)クラスをSystem.Text.Encoding.Encoding(エンコードを行うEncoderオブジェクトを作成するには)基本クラスと一緒に使用します。

于 2009-02-06T13:00:21.373 に答える
0

新しいテキスト ファイルを作成し、元の各バイトの前に '\0' を配置して、元のファイルのバイトを新しいファイルに書き込むことができます (元のテキスト ファイルが英語であると仮定します)。

于 2009-02-06T23:13:12.120 に答える
-1

擬似コード...

薄暗いシステム、ファイル、コンテンツ、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

このアプローチがうまくいくことを願っています。

于 2009-02-06T13:03:22.913 に答える
-1

iconv を使用できます。Windows では、Cygwin で使用できます。

iconv -f from_encoding -t to_encoding file
于 2009-02-06T13:54:13.950 に答える