2016-05-13 10 views
0

私はcsvからインポートするときに、各文字の間にこれらの文字のようなスペースを得ているという問題があります。このための簡単な回避策は、csvのエンコーディングをansi/asciiに変更することですが、これはファイルを開いてエンコーディングを指定して保存するときにのみ行われます。私が試してみました:Powershell:文字列内の文字を確認

(Get-Content -Path $path) | Out-file -FilePath $path -Encoding "ASCII")最初に私が働いていたと思ったが、私は以前にファイルに名前を付けて保存行われ、それを忘れていたのでそれがあった

「インポートしています。」インポートする前に、このように表示されます。

:私はあなたがそのイメージでそれを見ることができる方法をよく知っているが、テキストはいけない

Screen

を:

C:\temp,C:\temp,17.2MB, 0

しかし、csvファイルのインポート時の文字のようなスペースが巻き込まれる

C : \ t e m p, C : \ t e m p, 1 7 . 2 M B, 0

このスペースは私のdaで検索するのを止めていますta。

基本的にそのキャラクターが何であるかを知る方法はありますか?または、エンコーディングを変更する別の方法がありますか?

+1

'は、Get-Content'は、ファイルのために使用されるエンコーディングを推測しようとする - それは必ずしも正しく推測していません。 'Get-Content-encoding Unicode'は問題を改善しますか? –

+0

いいえ、それはちょうどエンコーディングを取得する場合は、とにかく、PowerShellのエンコーディングを変更するにはありますか? –

+1

エンコーディングを取得しません - Get-Content-encoding Unicode -Path $ path' *は、ファイルが(リトルエンディアン)UnicodeとしてエンコードされていることをPowerShellに伝えます。それがファイルのエンコーディングではない場合、出力されていない可能性があります。あなたはそれを読む前にファイルのエンコーディングを知る必要があります。 –

答えて

1

私たちがファイルにアクセスできないときのエンコーディングに答えるのは難しいですが、ファイルのエンコーディングがより多くのビット(ex 16/32bit)を使用していることがわかり、エンコーディングPowerShellは推測しましたそれは(あなたがエンコーディングを指定しなかったので、例えば7/8bitでした)。

あなたImport-CSV -command使用Import-CSV -Path Myfile.csv -Encoding Unicode(UTF16)で異なるエンコーディングを試してみてください、-Encoding UTF32など。

+0

残念ながら、私たちが実行しているpowershellのバージョンにはImport-CSVでエンコードされていないので、動作しません。 powershellをアップグレードすることはできません –

+1

次に 'Get-Content -Path MyFile.csv -Incoding Unicode | ConvertFrom-CSV'を実行します。ファイルを書いた人は、どのエンコーディングが使用されているかを知っています。 –

+0

ええ、私はエンコーディングが使われているかどうかを尋ねてきました。外部プログラムを使用してCSVファイルを作成しているとき、私は現在の内容がわからないので、PowerShellのエンコーディングを変更するだけでいいと思っていました。最悪の部分は、このcsvがExcelやメモ帳で開かれたとき、これをやっているだけのpowershellと私が使用しなければならないことです。( –

関連する問題