powershell - UTF7 中的 Powershell 输入 CSV - 某些字符的 UTF 8 输出问题
问题描述
我有一个客户需要从 UTF8 无 BOM 的 SQL Server 2016 数据库导出数据库。我使用 PowerShell 从数据库(ANSI 格式)导入原始输出,并以 UTF-8 格式输出文件。
现在我收到回复,是否可以删除一些“特殊字符”,并看到 PowerShell 已更改它,如图所示。
PowerShell 有什么办法可以保留或完全删除它?
将来其他字符也可能会发生这种情况,我们的示例数据集仅包含此特定字符。
编辑:客户有一个批处理脚本,它将选择请求从 MSSQL 服务器导出到 CSV 文件。脚本如下:
sqlcmd -S [SERVER]\[INSTANCE] -U sa -P [PASSWORD] -d [DATABASE] -I -i "C:\Path\To\Query.sql" -o "C:\Path\For\Output\Ouput.csv" -W -s"|"
CSV 由管道分隔。然后请求添加双引号作为文本标识符,并将编码更改为 UTF-8 无 BOM。数据库显然以 ANSI 格式导出文件。
我创建了一个 powershell 脚本,因为我知道它会自动为我添加双引号,并且我应该能够通过它更改编码。
脚本如下:
$file = Import-Csv -Path "C:\Path\For\Output\Ouput.csv" -Encoding "UTF7" -Delimiter "|"
$file | Export-Csv -path "C:\Path\For\Output\Ouput.csv" -delimiter "|" -Encoding "UTF8noBOM" -NoTypeInformation
在输入步骤中使用 -Encoding UTF7 标志的原因是,如果没有它,我们会遇到特殊字母的问题,例如ß
and äöü
(我们在德国,这些会很常见)。通过此脚本运行文件后,它基本上应该是这样,但是屏幕截图中的示例对于之后尝试将文件导入系统的人来说是一个问题。
这有帮助吗?我很乐意提供任何进一步的信息,谢谢你的进步!
编辑:找到解决方案。我编辑了从数据库创建导出的客户原始脚本,我添加了 -u 标志,使输出为 Unicode。它还不是 UTF8,但 powershell 脚本现在可以正确转换文件,也无需将导入编码设置为 UTF7。感谢 JosefZ 质疑我对强制 UTF7 编码的使用,让我意识到我找错了地方来解决这个问题。
解决方案
推荐阅读
- angular - 如何遍历来自组值的数组?
- tinymce - TinyMceEditor - 删除 img src 中的正斜杠
- tableau-api - 在 Tableau 中添加“刷新数据源按钮”
- javascript - 分组类别未在 wordpress 网站上正确显示
- google-bigquery - BigQuery 每 x 行返回数据
- php - PHP 容器在 localhost 上看不到我的应用程序
- ios - 应用程序在从库中选择媒体时崩溃,但将 nil 元素插入数组时除外
- sql-server - “过程需要未提供的参数...” SQL 跟踪指示过程获取参数
- java - 我收到 HTTP 状态 500 - 在 eclipse 中执行此代码时出现内部服务器错误。如何解决我的 java 项目中的错误
- node.js - 存储和使用 JWT 和密钥