Windows环境GitLab CI/CD流水线中UTF-8特殊字符处理异常求助
Windows环境GitLab CI/CD流水线中UTF-8特殊字符处理异常求助
我在GitLab里通过流水线创建合并请求时遇到了特殊字符编码的问题:当我在.gitlab-ci.yml里传入äöüß这类特殊字符给Python脚本,最终生成的合并请求里这些字符会变成乱码├ñ├╢├╝├ƒ,而且在Python脚本里打印输入参数还会触发编码错误,实在搞不懂哪里出问题了,求大家帮忙分析下!
我的.gitlab-ci.yml配置
test-job: stage: test script: - python script.py -Test "äöüß" tags: - shell:powershell - tools:python
对应的Python脚本script.py
import argparse import os import gitlab # arguments parser = argparse.ArgumentParser() parser.add_argument("-Test", type=str, required=True) args = parser.parse_args() # gitlab project gl = gitlab.Gitlab("https://xxx/", private_token=os.getenv("xxx"), ssl_verify=os.getenv("GITLAB_SSL_CERT")) project = gl.projects.get(os.getenv("CI_PROJECT_ID")) # create test merge request mr = project.mergerequests.create({ "source_branch": os.getenv("CI_COMMIT_BRANCH"), "target_branch": "master", "title": "Test-Title", "description": args.Test })
遇到的报错
当我在脚本里加了print(f"input: {args.Test}")来调试时,直接抛出了Unicode编码错误:
Traceback (most recent call last): File "D:\GitLab-Runner\builds\yxFfC2Egu\0\SPS_Entwicklung\test\ci-dev-test\script.py", line 14, in <module> print(f"input: {args.Test}") ~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Python313\Lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeEncodeError: 'charmap' codec can't encode character '\u251c' in position 7: character maps to <undefined>
环境和我已经尝试过的操作
- 我的Runner是Windows 11系统,用PowerShell作为执行shell
.gitlab-ci.yml文件本身是UTF-8编码的- 试过对字符串做各种
encode()/decode()操作,但都没效果 - 用
chardet检测过输入编码,返回的是UTF-8 - 还试过在PowerShell里设置
[Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8,但问题依旧
我本来以为YAML和Python都默认用UTF-8处理字符串,但会不会是PowerShell默认用Windows-1252编码导致的冲突?实在没头绪了,求各位大佬给点提示!
备注:内容来源于stack exchange,提问作者Pukinn
相关产品推荐
相关产品推荐

