Странная проблема с запуском этого скрипта в кодировке 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.