2016-05-13 64 views
0

我有一個問題,當我從csv導入每個字符之間的字符時,我會得到這些空間。爲此,簡單的解決方法是將csv編碼更改爲ansi/ascii,但這隻會在打開文件並保存並指定編碼時纔會執行。我曾嘗試:Powershell:找出一個字符是什麼字符串

(Get-Content -Path $path) | Out-file -FilePath $path -Encoding "ASCII"

起初我以爲工作,但它是因爲我之前已經做了保存爲文件上,並忘了。

導入的csv在導入之前看起來像這樣。

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

但當CSV導入像字符的空間涉足:

Screen

我不知道你怎麼能好看到該圖像中,但文字是:

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

這個空間阻止我在我的搜索上停止TA。

基本上有辦法找出那個角色是什麼,所以我可以擺脫它?還是有另一種方法來改變編碼?

+1

'GET-Content'試圖猜測用於文件的編碼 - 它並不一定正確地猜測。 'Get-Content-Encoding Unicode'是否可以改善問題? –

+0

不,它不是,無論如何改變PowerShell的編碼,如果只是得到編碼? –

+1

它不會「獲取」編碼 - 「Get-Content -encoding Unicode -Path $ path' *告訴* PowerShell文件被編碼爲(little-endian)Unicode。如果這不是文件的編碼,它將不起作用(從您的輸出中,它看起來可能已經)。在閱讀文件之前,您必須先了解文件的編碼。 –

回答

1

當我們無法訪問文件時,我們很難回答你有什麼編碼,但很清楚,文件的編碼保存爲使用更多位(例如16/32位),然後編碼PowerShell猜測它是(例如7/8bit,因爲你沒有指定編碼)。

試着在你的Import-CSV -command使用Import-CSV -Path Myfile.csv -Encoding Unicode(UTF-16)不同的編碼,-Encoding UTF32等。

+0

不幸的是,我們正在運行的powershell版本沒有對導入CSV進行編碼,因此無法工作。它不可能升級powershell –

+1

然後使用'Get-Content -Path MyFile.csv -Encoding Unicode | ConvertFrom-CSV'。誰寫的文件知道正在使用什麼編碼。 –

+0

是的,我問他們使用什麼編碼,只是等待迴應。由於我使用外部程序來生成csv文件,因此我希望能夠更改PowerShell中的編碼,因爲我不知道它是什麼。最糟糕的部分是當這個csv在excel或notepad打開它的罰款,它只是powershell是這樣做,我必須使用:( –

相關問題