将CSV内容编码为UTF-8
问题描述:
因此,我有这个导入csv文件的powershell脚本,将null替换为'0'并导出此csv。将CSV内容编码为UTF-8
的问题是,这个CSV的内容和标题是希伯来语
我几乎尝试使用-Encoding为所有类型的编码,但没有
任何建议的一切 ?
$propertyTranslation = @(
@{ Name = 'Customer__c'; Expression = { $_.'לקוח' } }
@{ Name = 'Name__c'; Expression = { $_.'שם' } }
@{ Name = 'CheckCount__c'; Expression = { $_.'כמות' } }
@{ Name = 'Deal'; Expression = { $_.'עסקהוזה' } }
@{ Name = 'Amount__c'; Expression = { $_.'סכום' } }
@{ Name = 'Discount__c'; Expression = { $_.'ניסיון' } }
# And so on
)
$csv = Import-Csv C:\Users\alon\Documents\again.csv -Header "Customer__c","Name__c","Deal","Amount__c","CheckCount__c","Discount__c"
$csv | ForEach-Object {
if($_.Customer__c -eq "") { $_.Customer__c = "0" }
if($_.Name__c -eq "") { $_.Name__c = "0" }
if($_.Deal -eq "") { $_.Deal = "0" }
if($_.Amount__c -eq "") { $_.Amount__c = "0" }
if($_.Discount__c -eq "") { $_.Discount__c = "0" }
if($_.CheckCount__c -eq "") { $_.CheckCount__c = "0" }
}
Select-Object -Property $propertyTranslation
$csv | Export-Csv C:\Users\alon\Documents\CheckDealBeforeUpsert.csv -NoTypeInformation -Encoding UTF8
答
在Windows中使用的术语“ANSI”基本上是多个编码(或代码页)的总称。通常它指的是windows-1252编码。但是,您的输入文件似乎使用windows-1255代码页进行编码。
我不确定是否在PowerShell中-Encoding ASCII
总是意味着windows-1252编码,或者是否针对本地化Windows版本进行了调整。如果它不调整,则可能需要输入文件转换成编码Import-Csv
可以处理之前,你可以导入和修改数据:
$inFile = 'C:\path\to\input.csv'
$outFile = 'C:\path\to\input_utf8.csv'
$reader = New-Object IO.StreamReader ($inFile, [Text.Encoding]::GetEncoding(1255))
$writer = New-Object IO.StreamWriter ($outFile, $false, [Text.Encoding]::UTF8)
while ($reader.Peek() -ge 0) {
$writer.WriteLine($reader.ReadLine())
}
$reader.Close(); $reader.Dispose()
$writer.Close(); $writer.Dispose()
你'$ propertyTranslation'类型是'system.array';请考虑一个[哈希表](https://technet.microsoft.com/en-us/library/ee692803.aspx),而不是像'$ propertyTranslation = @ {0} {Customer__c'='לקוח'; 'Name__c'='שם'; 'CheckCount__c'='כמות'; 'Deal'='עסקהוזה'; 'Amount__c'='סכום'; 'Discount__c'='ניסיון' }'。但是,如果您完全忽略'$ propertyTranslation',我会说您的脚本可以工作。 – JosefZ
好的,谢谢你的feedvak –
你可以看到我的代码(最后一行有点右)我尝试使用-Encoding。 –