提问人:Erik Andersson 提问时间:11/17/2023 更新时间:11/17/2023 访问量:18
与 Azure Runbook 一起使用的 Psql 无法处理 UTF-8 编码
Psql used with Azure runbook can't handle UTF-8 encoding
问:
设置是这样的,我们有一个 Azure Runbook,它使用带有 psql 的混合辅助角色将数据插入到运行 PostgreSQL 的 CosmosDB 中。
问题在于数据包含瑞典语字符,如å,ä和ö,当数据插入数据库时,这些字符会转换为?符号,因此“Fjäril”将变为“Fj?ril”。
如果我登录到 VM,混合辅助角色使用相同的帐户运行,并使用完全相同的数据、数据库、架构和表运行下面的完全相同的代码,那么这不会发生,我可以在数据库中看到“åäö”。
"INSERT INTO $Schema.$table
VALUES('$Guid','$Givenname','$Username','$Surname','$Name');" | & "$psqlpath\psql" --csv $dburl -c
我读到其他人在类似的事情上有问题,比如这篇文章: https://medium.com/@mozzeph/fix-utf-8-encoding-when-calling-azure-child-runbooks-inline-78644e6af242
但我没有为此使用任何子运行手册,我尝试制作一个单独的测试运行手册,该运行手册仅获取数据,然后以相同的结果运行上面的代码。
如果我在添加到数据库之前使用 Write-Output 写出数据,那么我可以看到“åäö”被正确地输出到日志中。
到目前为止,我已经尝试过:
答:
0赞
Erik Andersson
12/3/2023
#1
我找到了原因,显然 Powershell ISE 会自动将格式设置为 UTF-8,而普通的 Powershell 会话则不会,所以我在 PS ISE 中的测试可以正常工作,但 PS 会话从 Azure Runbook 启动,需要先手动设置格式:$OutputEncoding = [System.Text.UTF8Encoding]::new()
评论