2014-05-20 4 views
0

나는이 문제가 새로운 것은 아니지만 그것을 해결하는 방법을 모른다는 것을 알고 있습니다. .opl 파일 (vim 개요 형식)을 .mm (자유로운 마음)으로 변환해야합니다. 요점은 원래 파일이 이탈리아어로 쓰여지므로 악센트가 가득하며 파이썬 스크립트 (plugin)를 사용하는 변환 중에 유니 코드 오류가 나타납니다. 이것은 내가 스크립트의 성공없이Python의 액센트

# -*- coding:utf-8-*- 

의 시작 부분에 삽입하려고 세부

python outline_freemind.py test.otl > test.mm 
File "outline_freemind.py", line 114, in <module> 
    xmltree.write(sys.stdout, 'utf-8') 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 815, in write 
    serialize(write, self._root, encoding, qnames, namespaces) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 934, in _serialize_xml 
    _serialize_xml(write, e, encoding, qnames, None) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 934, in _serialize_xml 
    _serialize_xml(write, e, encoding, qnames, None) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 934, in _serialize_xml 
    _serialize_xml(write, e, encoding, qnames, None) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 927, in _serialize_xml 
    v = _escape_attrib(v, encoding) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xml/etree/ElementTree.py", line 1085, in _escape_attrib 
    return text.encode(encoding, "xmlcharrefreplace") 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 9: ordinal not in range(128) 

입니다.

+0

'#' - encoding : utf-8 - * -''coding'이 아니라'encoding'입니다. – Chnossos

+0

@Chnossos [그게 맞지 않아] (http://legacy.python.org/dev/peps/pep-0263/) OP의 오류는 선언 된 인코딩과 아무 관련이 없지만 어떤 경우에도 스크립트. –

+0

설명서 (https://docs.python.org/2/howto/unicode.html)에 따르면 구문은 다음과 같습니다. #!/usr/bin/env python # - 코딩 : latin-1 - * - –

답변

1

플러그인의 선언 된 인코딩은 현재 가지고있는 문제와 관련이 없습니다. 선언의 유일한 목적은 인코딩을 프로그램에의 인코딩으로 알려주는 것이며, 프로그램에는 ASCII 이외의 문자가 없습니다 범위이므로 잘못 해석하는 것은 불가능합니다. 문제가 프로그램의 인코딩 관련이 있었다 경우

,이 같은 오류 얻을 것 :

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "outline_freemind.py", line 115 
SyntaxError: Non-ASCII character '\xc3' in file outline_freemind.py on line 115, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 

을 ...하지만 당신이 실제로 대신 UnicodeDecodeError을 얻고 있기 때문에, 그 오류를 의미 플러그인이 비 ASCII 입력을 처리하고 있기 때문에 아마도 플러그인 작성자에게보고해야합니다.

+0

이 정보는 유익하지만 OP 문제를 해결하지는 못합니다. 그것은 아마도 주석으로 더 적합 할 것이다. – tripleee

+0

@treeplee 조금 의견이 있으시다고 생각하지 않습니까? 나는 그 대답이 OP의 문제를 해결하지 않는다는 것에 동의하지만, 제 3 자 생산 코드를 디버깅하는 것만으로 그렇게 할 것입니다. 이것은 SO의 범위를 벗어납니다 (대신 코드 작성자에게 연락을 제안했습니다). 질문에 대한 다른 의견은 OP를 잘못된 길로 인도 할 위험에 처해 있습니다. 이 답변은 너무 멀리 터벅 터벅 걷는 것을 피할 수 있기를 희망합니다. –