【问题标题】:TeamCity Logs UTF8 - Powershell ScriptTeamCity 记录 UTF8 - Powershell 脚本
【发布时间】:2017-05-20 09:24:21
【问题描述】:

我创建了 powershell 脚本来读取 TeamCity 上的一个步骤中的文件。 如果我在 Powershell 应用程序中读取文件并放入下一个脚本,它可以正常工作,但是当在运行器类型“PowerShell”的步骤中执行该文件时,编码不起作用并且某些字符没有编码(如“áãéí”等)

$userDocuments = [environment]::getfolderpath("mydocuments")
$file= "myfile.txt"
$fullPath = Join-Path $userDocuments -ChildPath $file
Get-Content -Encoding UTF8 $fullPath

有人帮帮我吗?

提前致谢

【问题讨论】:

  • 我不明白你的问题。 Get-Content -Encoding UTF8 通过 UTF8 解码器从磁盘读取数据……然后会发生什么?您的脚本不执行任何其他操作。 Get-Content 的输出去哪里了? áãéí 字符出现在哪里? “读取文件然后放置下一个脚本”是什么意思?
  • @TessellatingHeckler,如果我在 powershell 中执行脚本,内容是正确的。
  • @TessellatingHeckler 他的 Get-Content 命令的输出被转储到控制台。因为脚本是通过 TeamCity 代理调用的,该代理捕获控制台输出并将其记录并显示在应用程序 GUI 中
  • @Nick 是的,但是 PowerShell 控制台 doesn't support Unicode characters 正确。 “powershell 应用程序”是指 ISE 还是自定义提示符或其他控制台主机?我根本不熟悉 TeamCity,但如果 fipcurren88 真正解释了他们如何设置它以及问题发生在哪里,这对 TeamCity 用户来说可能会更容易发表评论。例如是this problem 吗?信息不足,只能猜测。

标签: powershell encoding teamcity readfile


【解决方案1】:

需要进行一些配置更改才能告诉 TeamCity 将输出处理为 UTF-8 您可以阅读标题下的HERE 处理输出

要正确处理来自 PowerShell 的非 ASCII 输出,必须在 PowerShell 端和 TeamCity 端都设置正确的编码。

要将 PowerShell 的输出编码设置为 UTF-8,请将以下行添加到 PowerShell 脚本的开头: [Console]::OutputEncoding = [System.Text.Encoding]::UTF8

要在 TeamCity 代理端设置编码,要么设置 java 启动选项-Dfile.encoding=UTF-8,要么将构建配置参数teamcity.runner.commandline.stdstreams.encoding 值设置为UTF-8

【讨论】:

  • 感谢@Nick,工作正常。
猜你喜欢
  • 1970-01-01
  • 2018-07-17
  • 2015-11-18
  • 2013-04-25
  • 2014-08-01
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
  • 2015-03-17
相关资源
最近更新 更多