2017-08-22 106 views
0

UTF-8をANSIファイルに変換しようとしています。グーグルの知識と助けの少しで、私はUTF-8をANSIに変換する

Get-Content C:\Output2\PA01.094 | Set-Content C:\Output\PA01094 -Encoding Ascii 

は、今私は、ファイル名を変更せずに別のフォルダにフォルダ内のすべてのUTF-8のファイルを変換したい単一のファイルに変換するために、1行を見つけました。

答えて

0

次のようなコードを使用できます。必要なファイルを指定するために、必要に応じてGet-ChildItemを変更します。をもたらすことができる翻訳することはできませんUTF8または他のUnicodeエンコーディングを扱うことができるすべての文字を扱うことができない

$sourcePath = "C:\source" 
$destinationPath = "C:\output" 
if (!(Test-Path $destinationPath)) 
{ 
    New-Item -ItemType Directory -Path $destinationPath 
} 
Get-ChildItem -Path $sourcePath -File | ForEach-Object { 
Write-Host "Converting $_" 
$content = Get-Content $_.FullName 
Set-content (Join-Path -Path $destinationPath -ChildPath $_) -Encoding Ascii -Value $content 
} 

ASCIIエンコーディング、文字?出力ファイル。

出力のエンコードをチェックするには、PowerShellを使用できます。

たとえば、 "Hello、World!"というメモ帳で作成されたテキストファイルの場合

次のエンコードは、これらの結果を生成します。 UTF-8の開始には特殊文字がありますが、これはファイルがUTF-8であることを示しています。メモ帳のデフォルトの保存形式ではありません。

PS C:\support> [System.IO.File]::ReadAllBytes("C:\support\helloworld_ansi.txt") 
    72 
    101 
    108 
    108 
    111 
    44 
    32 
    87 
    111 
    114 
    108 
    100 
    33 
    PS C:\support> [System.IO.File]::ReadAllBytes("C:\support\helloworld_unicode.txt") 
    255 
    254 
    72 
    0 
    101 
    0 
    108 
    0 
    108 
    0 
    111 
    0 
    44 
    0 
    32 
    0 
    87 
    0 
    111 
    0 
    114 
    0 
    108 
    0 
    100 
    0 
    33 
    0 
    PS C:\support> [System.IO.File]::ReadAllBytes("C:\support\helloworld_utf8.txt") 
    239 
    187 
    191 
    72 
    101 
    108 
    108 
    111 
    44 
    32 
    87 
    111 
    114 
    108 
    100 
    33 
    PS C:\support> 
+0

これは元のファイルを上書きします。リクエストは別のフォルダにファイルを書き込むことです。 – andyb

+0

ファイルを書きたい場所に、設定内容を変更します。例えば、 –

+0

を追加してください。あなたの最初の答えは、質問のポイントを逃した。私がそれを指摘すると、あなたは私の答えを裂く。ニース。 – andyb

2

以下はASCIIとしてエンコード$destFolder下に$sourceFolder内のすべてのファイルを読み込み、再作成されます。

$sourceFolder = "c:\temp\src" 
$destFolder = "c:\temp\dst" 

Get-ChildItem -Path $sourceFolder | 
    foreach-object { 
     get-content $_ | Set-content -Path (Join-Path $destFolder $_.Name) -Encoding ASCII 
    } 

N.B.このコードは元のファイルのエンコーディングを検証しません。

関連する問題