zl程序教程

您现在的位置是:首页 >  其他

当前栏目

arcade 读取地图信息时:错误: ‘gbk‘ codec can‘t decode byte 0x91 in position 314: illegal multibyte sequence

错误 in 读取 can sequence byte position decode
2023-09-11 14:20:50 时间

arcade 读取地图信息时:错误: 'gbk' codec can't decode byte 0x91 in position 314: illegal multibyte sequence

E:\pgame\venv\Scripts\python.exe E:/pgame/arcadegame/game10-地图双层.py
path: E:\pgame\venv\Lib\site-packages\arcade\resources
Traceback (most recent call last):
  File "E:/pgame/arcadegame/game10-地图双层.py", line 208, in <module>
    main()
  File "E:/pgame/arcadegame/game10-地图双层.py", line 203, in main
    window.setup()
  File "E:/pgame/arcadegame/game10-地图双层.py", line 83, in setup
    self.tile_map = arcade.load_tilemap(map_name, TILE_Scaling, layer_options)
  File "E:\pgame\venv\lib\site-packages\arcade\tilemap\tilemap.py", line 963, in load_tilemap
    offset=offset,
  File "E:\pgame\venv\lib\site-packages\arcade\tilemap\tilemap.py", line 187, in __init__
    self.tiled_map = pytiled_parser.parse_map(map_file)
  File "E:\pgame\venv\lib\site-packages\pytiled_parser\parser.py", line 21, in parse_map
    parser = check_format(file)
  File "E:\pgame\venv\lib\site-packages\pytiled_parser\util.py", line 42, in check_format
    line = file.readline().rstrip().strip()
UnicodeDecodeError: 'gbk' codec can't decode byte 0x91 in position 314: illegal multibyte sequence

错误:

def check_format(file_path: Path) -> str:
    with open(file_path) as file:
        # print(file.readline())
        line = file.readline().rstrip().strip()
        if line[0] == "<":
            return "tmx"
        else:
            return "json"

原因:地图文件中有汉字

改为如下后:

def check_format(file_path: Path) -> str:
    with open(file_path,encoding='utf-8') as file:
        # print(file.readline())
        line = file.readline().rstrip().strip()
        if line[0] == "<":
            return "tmx"
        else:
            return "json"

此处过去了,但在后面又出现了错误

E:\pgame\venv\Scripts\python.exe E:/pgame/arcadegame/game10-地图双层.py
path: E:\pgame\venv\Lib\site-packages\arcade\resources
Traceback (most recent call last):
  File "E:/pgame/arcadegame/game10-地图双层.py", line 208, in <module>
    main()
  File "E:/pgame/arcadegame/game10-地图双层.py", line 203, in main
    window.setup()
  File "E:/pgame/arcadegame/game10-地图双层.py", line 83, in setup
    self.tile_map = arcade.load_tilemap(map_name, TILE_Scaling, layer_options)
  File "E:\pgame\venv\lib\site-packages\arcade\tilemap\tilemap.py", line 963, in load_tilemap
    offset=offset,
  File "E:\pgame\venv\lib\site-packages\arcade\tilemap\tilemap.py", line 187, in __init__
    self.tiled_map = pytiled_parser.parse_map(map_file)
  File "E:\pgame\venv\lib\site-packages\pytiled_parser\parser.py", line 25, in parse_map
    return tmx_map_parse(file)  # type: ignore
  File "E:\pgame\venv\lib\site-packages\pytiled_parser\parsers\tmx\tiled_map.py", line 25, in parse
    raw_map = etree.parse(map_file).getroot()
  File "D:\Python37\lib\xml\etree\ElementTree.py", line 1197, in parse
    tree.parse(source, parser)
  File "D:\Python37\lib\xml\etree\ElementTree.py", line 598, in parse
    self._root = parser._parse_whole(source)
UnicodeDecodeError: 'gbk' codec can't decode byte 0x91 in position 314: illegal multibyte sequence

最终还是放弃在地图中使用中文吧