在AppVeyor中的UTF-8,Python 3.6

2024-09-29 19:35:34 发布

您现在位置:Python中文网/ 问答频道 /正文

1。摘要

我不知道如何使用非ascii符号来构建AppVeyor。在


2。设置

我的简单^{}文件:

print('Саша наилучшая!')

我的简单^{}文件:

^{pr2}$

我用UTF-8编码保存这两个文件。在


3。预期行为

如果我在终端或解释器SublimeREPL中运行SashaAppVeyorEncoding.py文件,我得到:

D:\SashaPythonista>python SashaAppVeyorEncoding.py
Саша наилучшая!

如果我的SashaAppVeyorEncoding.py文件不包含西里尔文符号:

print('Sasha superior!')

AppVeyor内部版本successful passed

Build started
git clone -q --branch=master https://github.com/Kristinita/SashaPythonista.git C:\projects\sashapythonista-7l3yk
git checkout -qf 3a0393a5b9548a5debabebfc5e28d17f3000a768
%PYTHON%\python SashaAppVeyorEncoding.py
Sasha superior!
Discovering tests...OK
Build success

4。实际行为

My AppVeyor build failed

Build started
git clone -q --branch=master https://github.com/Kristinita/SashaPythonista.git C:\projects\sashapythonista-7l3yk
git checkout -qf 262cef287d45b1548640b9a773b680de90b7d138
%PYTHON%\python SashaAppVeyorEncoding.py
Traceback (most recent call last):
  File "SashaAppVeyorEncoding.py", line 1, in <module>
    print('\u0421\u0430\u0448\u0430 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0430\u044f!')
  File "C:\Python36-x64\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-3: character maps to <undefined>
Command exited with code 1

5。没有帮助

  1. {{cdi>
  2. add ^{}命令发送到appveyor.yml文件
  3. install ^{}appveyor.yml文件

我更新的SashaAppVeyorEncoding.py文件:

# -*- coding: utf-8 -*-
print('Саша наилучшая!')

我更新的appveyor.yml文件:

environment:

  matrix:

    - PYTHON: "C:\\Python36-x64"
      PYTHON_VERSION: "3.6.3"
      PYTHON_ARCH: "64"
      PIP: "C:\\Python36-x64\\Scripts\\pip"

platform: x64

install:

  - cmd: "%PIP% install win-unicode-console"
  - cmd: chcp 65001

build_script:

  - cmd: "%PYTHON%\\python SashaAppVeyorEncoding.py"

我的updated AppVeyor build

Build started
git clone -q --branch=master https://github.com/Kristinita/SashaPythonista.git C:\projects\sashapythonista-7l3yk
git checkout -qf 11df07d4c424cd8e28a1b0db0f43906aa63f42f1
Running Install scripts
%PIP% install win-unicode-console
Collecting win-unicode-console
  Downloading win_unicode_console-0.5.zip
Installing collected packages: win-unicode-console
  Running setup.py install for win-unicode-console: started
    Running setup.py install for win-unicode-console: finished with status 'done'
Successfully installed win-unicode-console-0.5
chcp 65001
Active code page: 65001
%PYTHON%\python SashaAppVeyorEncoding.py
Traceback (most recent call last):
  File "SashaAppVeyorEncoding.py", line 2, in <module>
    print('\u0421\u0430\u0448\u0430 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0430\u044f!')
  File "C:\Python36-x64\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-3: character maps to <undefined>
Command exited with code 1

6。当地环境

操作系统和版本:
Windows 10 Enterprise LTSB 64位EN
Python:
3.6.3
chcp:
活动代码页:65001


Tags: install文件inpygitunicodewinconsole
1条回答
网友
1楼 · 发布于 2024-09-29 19:35:34

看起来python没有打印到AppVeyor上的控制台,或者输出被重定向。因此,^{}用于在打印到stdout时将Unicode文本编码为字节。cp1252只支持一百万个Unicode字符中的几个字符。要在此处更改sys.stdout.encoding,您可以^{} envvarutf-8字符编码支持所有Unicode字符。在

相关问题 更多 >

    热门问题