python 的 black 格式化程序给出解码错误“不是 utf-8 字符”我如何告诉 black 使用“UTF-16”?

问题描述 投票:0回答:1

输入文件由intelliJ IDEA 2023.2.2创建 几个文件给出了相同的错误。 我看到评论表明 utf-8 是标准编码 并相信 intelliJ IDEA 2023.2.2 会介意该标准。

我删除了 --diff 标签,但仍然得到相同的结果。

在 Windows 11 上,使用 python 3.11 尝试格式化我的任何 python.py 文件 我得到了这个回溯

最后一行说:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 16: invalid continuation byte
E:\python\Projects\p2>python -m black --diff settings.py
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\dickr\AppData\Roaming\Python\Python311\site-packages\black\__main__.py", line 3, in <module>
    patched_main()
  File "src\black\__init__.py", line 1602, in patched_main
  File "C:\Users\dickr\AppData\Roaming\Python\Python311\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\dickr\AppData\Roaming\Python\Python311\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\dickr\AppData\Roaming\Python\Python311\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\dickr\AppData\Roaming\Python\Python311\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\dickr\AppData\Roaming\Python\Python311\site-packages\click\decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "src\black\__init__.py", line 668, in main
  File "src\black\__init__.py", line 744, in get_sources
  File "C:\Users\dickr\AppData\Roaming\Python\Python311\site-packages\black\files.py", line 254, in get_gitignore
    lines = gf.readlines()
            ^^^^^^^^^^^^^^
  File "<frozen codecs>", line 322, in decode
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd2 in position 16: invalid continuation byte

我在黑色文档中搜索了更改编码的选项,但没有成功。 谷歌搜索了这个问题,因为它与黑色相关

python utf-8 formatting python-3.11
1个回答
0
投票

如何告诉黑色使用“UTF-16”?

你不能。相反:

  1. 将文件转换为 utf-8。
  2. 使用黑色。
  3. 转换回来。

在Linux中你会做一些事情

iconv -f UTF16 -t UTF8 input | black - | iconv -f UTF8 -f UTF16 | sponge input

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.