2016-05-13 30 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是这样做,我必须使用:( –

相关问题