Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将SQL Server代理作业创建的文件的编码更改为UTF-8?_Php_Sql Server_Encoding_Utf 8_Sql Server Agent - Fatal编程技术网

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

Php 如何将SQL Server代理作业创建的文件的编码更改为UTF-8?,php,sql-server,encoding,utf-8,sql-server-agent,Php,Sql Server,Encoding,Utf 8,Sql Server Agent,我正在尝试创建一个每日作业来查询我的SAP db(SQL Server 17)的项目库存,将结果保存在一个.txt文件中,并将其ftp到我的网站服务器,在那里我将使用PHP解析它,并使用它更新网站MySQL db上的库存水平 我在sql server代理上创建了一个作业,该作业将运行以下查询: SELECT Cast (ItemCode as varchar(20)) + '##'+ Cast (OnHand as varchar(20))+ '@@' AS Item_Stock FROM

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

我在sql server代理上创建了一个作业,该作业将运行以下查询:

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这两个字段都是数字。手头是库存领域,所以显然只有数字。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

谢谢但建议的第二步失败,并显示以下错误消息:以用户身份执行:NT Service\SQLSERVERAGENT。作业步骤在PowerShell脚本的第3行收到错误。对应的行是“设置内容-路径$Path-值$Content-编码UTF8”。更正脚本并重新安排作业。PowerShell返回的错误信息是:“找不到与参数名称“Encode”匹配的参数。”。进程退出代码-1。步骤失败。抱歉@einav应该是
-编码的。我已经编辑了这篇文章。我当然不希望!这是昨天安装的新服务器。。。5.1.17763.771OK。将重试并让您知道我对“您不能”的评论是正确的,即您不能让SQL Server生成UTF-8文件@einav。代理仍将创建UTF-16文件。这样做只是获取所有内容,然后用UTF-8重写。