-1

我正在使用这个插件,带有 xml 提要。我有一个为这个新闻提要生成 xml 文件并将其保存在所需位置的 SP。这是相同的 SQL 查询

SET @fileName = 'D:\YVXS\Ycube-Templates\SSTool\output\include\YNews\ycube.xml'
SET @sqlStr = 'select ''<?xml version=""1.0"" encoding=""utf-8"" ?> <rss version=""2.0""> <channel> <title> SiteName </title> <description> Site Description </description> <link> http://www.website.com </link>'' + (SELECT LTRIM(RTRIM(TITLE)) AS title,CONVERT(VARCHAR(10),[PUB DATE],101) AS pubdate, ''dbo_News_view.php?editid1='' + cast([Sl No] as varchar(20)) AS link, ''dbo_News_list.php?dbo_New_list.aspx?'' AS [guid] FROM SSTOOL.DBO.NEWS item FOR XML AUTO, ELEMENTS) + (SELECT ''</channel> </rss>'')'
SET @sqlCmd = 'bcp "'+@sqlStr+'" queryout ' + @fileName + ' -S "LOCALHOST\SQLSERVER" -U "sa" -P "source$1" -w -r -t -x'
EXEC xp_cmdshell @sqlCmd

在 chrome 和 Firefox 中一切正常,但在 IE 新闻代码中显示空白内容。当我手动打开 xml 文件并将其保存(记事本)而不进行任何更改时,新闻自动收报机按预期开始在 IE 中工作。上面的 SP 生成的 xml 和这里提到的完全一样

4

1 回答 1

0

正如我所想的那样,问题仅在于编码。我很难理解这些东西,因为主 xml 文件没有显示任何“不需要的”字符。我花了很长时间分析 xml 文件的二进制副本,但是当我从 Internet Explorer 检查 html 文件的源时问题变得很明显(因为 chrome 源也绝对没问题,似乎只有 IE 有编码问题) .

只需在 bcp 语句中添加 -c -C850 ,我就可以使用正确的编码呈现 XML ..

这是我的最终解决方案

SET @fileName = 'D:\YVXS\Ycube-Templates\SSTool\output\include\YNews\ycube.xml'
SET @sqlStr = 'select ''<?xml version=""1.0"" encoding=""utf-8"" ?> <rss version=""2.0""> <channel> <title> SiteName </title> <description> Site Description </description> <link> http://www.website.com </link>'' + (SELECT LTRIM(RTRIM(TITLE)) AS title,CONVERT(VARCHAR(10),[PUB DATE],101) AS pubdate, ''dbo_News_view.php?editid1='' + cast([Sl No] as varchar(20)) AS link, ''dbo_News_list.php?dbo_New_list.aspx?'' AS [guid] FROM SSTOOL.DBO.NEWS item FOR XML AUTO, ELEMENTS) + (SELECT ''</channel> </rss>'')'
SET @sqlCmd = 'bcp "'+@sqlStr+'" queryout ' + @fileName + ' -S "LOCALHOST\SQLSERVER" -U "sa" -P "source$1" -r -t -x -c -C850'
EXEC xp_cmdshell @sqlCmd
于 2013-10-28T10:51:48.237 回答