2017-09-04 14 views
1

GBPでCSVの£文字を置き換えようとしています。PowerShellが間違ったシンボルに置き換えられました

私はテスト用CSV(C:\テスト\ test1に)を作成し、以下のように:

 
col1, 
£100 Test 

を私は次のコードを記述するために管理している:

Import-Csv C:test\test1.csv | 
    ForEach { if($_.ou -match "£") {$_.OU = $_.OU -replace "£","GBP"}; $_} | 
    Export-Csv C:\test\test1replaced.csv -NoTypeInformation 

私の問題は、ファイル内のことです£シンボルを作成したのはであり、GBPではないと思われます。私が間違っていることを見ることができません。イェルーンMostertの答えを引用

+6

'-Encoding UTF8' –

答えて

0

置き換えます。これにより

Import-Csv C:test\test1.csv | 
ForEach { if($_.ou -match "£") {$_.OU = $_.OU -replace "£","GBP"}; $_} | 
Export-Csv C:\test\test1replaced.csv -NoTypeInformation 

を:

Import-Csv C:test\test1.csv -Encoding UTF8 | 
ForEach { if($_.ou -match "£") {$_.OU = $_.OU -replace "£","GBP"}; $_} | 
Export-Csv C:\test\test1replaced.csv -NoTypeInformation 

あなたは-encodingスイッチを使用してのUTF8ようなタイプを設定する必要があります終わらせる。

+0

それはうまくいかないようです。私が実行した場合:Import-Csv C:test \ test1.csv -Uncoding UTF8ですでにコンソールの文字を に変換しています – user8532116

+0

実行すると、シンボルがコンソールに正しく表示されますが、 – user8532116

+0

@ user8532116:他の形式も試してみてください。 –

0

入力いただきありがとうございます。それはそれのように見えませんが、私が思いついたものに私をもたらしました:

(get-content C:test\test1.csv).replace('£', 'GBP') | set-content C:\test\test1replaced.csv 
+0

'-join(Get-Content" C:test \ test1.csv "-Encoding Byte | ForEach-Object {[char] $ _})'のようにすべての文字を正しく処理する必要があります。 '£' _Pound Sign_しかし、失敗する可能性があります。 '€' _ユーロsign_のために。 – JosefZ

関連する問題