如何将 SQL 服务器代理作业创建的文件的编码更改为 UTF-8?

How to change the encoding of a file created by SQL Server Agent job to UTF-8?

我正在尝试创建一个每日作业来查询我的 SAP 数据库(SQL 服务器 17)的项目库存,将结果保存在一个 .txt 文件中,然后 ftp 它到我的网站服务器,我将在其中使用 PHP 对其进行解析,并使用它来更新网站 MySQL 数据库上的库存水平。

我在 sql 服务器代理上创建了一个作业,它将 运行 以下查询:

SELECT
Cast (ItemCode as varchar(20)) + '##'+
Cast (OnHand as  varchar(20))+ '@@' AS Item_Stock 
FROM OITW
WHERE OITW.WhsCode='01' AND OnHand>0

结果输出到 .txt 文件,如下所示:

以上所有都运行良好。

问题是文件没有保存为UTF-8,所以上传到服务器后(通过ftp),任何类型的PHP解析(explode, substr等)失败。

所以我正在寻找的是一种强制将 txt 文件保存为 UTF-8 的方法,或者一种使 PHP 读取文件并能够将其解析为字符串。

我要补充的是,OnHand 和 ItemCode 这两个字段都是数字。 OnHand 是库存字段,所以显然只有数字。 ItemCode 可能包含一些非 ASCII 字符,但如果有这样的项目,它们无论如何都是无关紧要的;我这么说是为了强调转换编码时不用担心数据丢失,因为数字是任何编码中的数字(我认为...)。

非常感谢任何帮助。

你不能,这是简单的答案。

更详细的答案是在您的作业中添加一个进一步的步骤来运行一个 Powershell 脚本。这样的事情应该有效:

$Path = "C:\{the rest of the file path in your image}\office_stock.txt"
$Content = Get-Content -Path $Path
Set-Content -Path $Path -Value $Content -Encoding UTF8