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

问题描述 投票:0回答:1

我正在尝试创建日常工作以查询我的SAP数据库(SQL Server 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文件,如下所示:output file setup

以上所有方法都运行良好。

问题是文件没有保存为UTF-8,因此,在将文件上传到服务器(通过ftp)后,任何类型的PHP解析(爆炸,substr等)都会失败。

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

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

任何帮助将不胜感激。

php sql-server encoding utf-8 sql-server-agent
1个回答
0
投票

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

更冗长的答案是在您的工作中添加另一个步骤,该步骤运行需要执行的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
© www.soinside.com 2019 - 2024. All rights reserved.