Невозможно запустить скрипт с одним конкретным символом Unicode в Python 3.2 - PullRequest
1 голос
/ 20 августа 2011

Странная проблема с запуском этого скрипта в кодировке UTF-8 в Python 3.2.Python отказывается запускаться, если он содержит японский символ хираганы の (см. Трассировку стека ниже)

Traceback (most recent call last):
  File "MyScript.py", line 20, in <module>
    print(no)
  File "C:\Python32\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 '\u306e'
                    in position 0: character maps to <undefined>

Он работает нормально без этого единственного символа (в файле также есть другие символы), и яЯ затрудняюсь объяснить, почему.Любая помощь будет оценена.

Вот скрипт, который воспроизводит ошибку для меня:

#!/usr/bin/env python
# coding=utf-8

import glob
import codecs
import os.path
from datetime import datetime, timedelta

assTemplate = \
r"""タイトル\N {time.year}年{time.month}月{time.day}日 {age}\N{place}"""

for mtsName in glob.glob('./*.MTS'):
    baseName = mtsName.lower().replace('.mts', '')
    mtsName = os.path.abspath(mtsName)

    # Get the time the video file was created.
    mtsTimestamp = datetime.fromtimestamp(os.stat(mtsName).st_ctime)

    no = '\u306e'  
    print(no)       ## UnicodeDecodeError
    age = '生後'
    place = '自宅'
    print('自宅')

    # Generate the contents of the ASS file.
    assContents = assTemplate.format(time=mtsTimestamp, age=age, place=place)

    # Write the ASS file.
    print(assContents)

Причиной использования Python 3.2 было то, что форматирование строк со строками Unicode не работаловсе для меня в Python 2.7.2.

Ответы [ 2 ]

1 голос
/ 20 августа 2011

Вы пытаетесь распечатать символ Unicode на терминал, который использует cp1252.cp1525 вообще не поддерживает любые японские символы.Следовательно, это не проблема с этим персонажем, держу пари, что вы получаете точно такую ​​же ошибку с любым японским символом.

0 голосов
/ 21 января 2012

У меня тоже была эта проблема. Мой язык вьетнамский. Вы можете вырезать файл cp1252.py или удалить этот файл. Вы должны вырезать этот файл и переместить другую папку, любые папки, которые вам нравятся. Теперь в папке encodings нет файла cp1252.py, не беспокойтесь. Затем вы копируете файл utf-8 в папку кодировок, вставляете этот файл в папку кодировок и переименовываете этот файл в cp1252.py. Вы понимаете.

Я исправил эту проблему следующим образом.

Удачи вам!

Мой ник Yahoo: phong_ux. Если вам нужна дополнительная помощь, я готов помочь вам.

...