首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jenkins Pipeline:如何用writeFile编写UTF-8文件?

Jenkins Pipeline:如何用writeFile编写UTF-8文件?
EN

Stack Overflow用户
提问于 2017-02-23 22:53:36
回答 1查看 33.4K关注 0票数 14

我希望这不是一个bug,我只是做错了什么。我有一个Jenkins (v2.19.1) Pipeline作业,在它的groovy脚本中,我需要在Windows节点上搜索和替换现有文本文件中的一些文本。

我已经使用了fart.exe和powershell来做搜索和替换,但我真的很想用Jenkins中的groovy来做这件事,并消除对fart/powershell/等的依赖,并使这段代码在linux和windows节点上更具可重用性。

经过大量的谷歌搜索和尝试各种方法后,我得到的最接近的方法是使用readFile和writeFile。但是,我还不能让writeFile创建一个UTF-8文件。即使我指定了UTF-8,它也会创建一个ANSI文件(假设我做得正确)。

这是我目前所掌握的.

代码语言:javascript
运行
复制
def fileContents = readFile file: "test.txt", encoding: "UTF-8"
fileContents = fileContents.replace("hello", "world")
echo fileContents
writeFile file: "test.txt", text: fileContents, encoding: "UTF-8"

我已经向多个文本编辑器确认,当我启动时,test.txt文件是UTF-8,并且在writeFile行之后是ANSI。我尝试了including/not的所有组合,包括编码属性和"UTF-8“与"utf-8”。但在所有情况下,文件都写出为ANSI (正如Notepad++和VS Code所报告的那样)。此外,将添加一个问号(十六进制3F)作为文件的第一个字符。

回应行未显示额外的3F字符,因此问题似乎出在writeFile行中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-06 04:38:39

您的代码看起来是正确的。如果只使用非重音字符和数字,请注意ANSI和UTF-8是相同的。尝试在你的文件中有一些重音字母(áéíóúç),这样编辑器可能会把它识别为UTF-8文件。

您必须使用Jenkins管道writeFile function。这是一个特殊的Jenkins方法,用于在您的工作区中写入文件。默认的Java File对象将不起作用。

若要指定编码,必须使用命名参数。下面是一个示例:

代码语言:javascript
运行
复制
writeFile(file: "filename.txt", text: "áéíóú", encoding: "UTF-8")

这将在您的工作区的根目录下创建一个名为filename.txt的文件,该文件的内容为"áéíóú“,编码为UTF-8。

顺便说一句,如果您完全控制了必须搜索和替换的文件,请考虑使用Groovy自带的SimpleTemplateEngine

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42419119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档