2016-06-17 1 views
0
  1. 키워드가있는 라이브러리가 있습니다. 키워드는 테스트 문서에 몇 가지 메시지를 씁니다.
  2. utf-8에서이 파이썬 파일 및 향하고하여 필요했다 # -*- coding: utf-8 -*-
  3. *.robot 파일이 비 ASCII 기호와 로봇 파일에이 키워드의 utf-8

실행에있는 것은 제공 :로봇 프레임 워크 : 이전 형식 % s과 새 형식 간의 인코딩 차이점

  1. 하는 경우 키워드는 "%s" % msg : 오류 없음, 로그 파일은 일반적으로 표시되는 러시아어 메시지를 제공합니다. 키워드 "{}".format(msg) 또는 "{!s}".format(msg)이있는 경우
  2. : 나는 당신이 볼 수 있듯이, 나는 새로운 방법에 서식에만 오래된 파이썬을 변경 오류 UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-10: ordinal not in range(128)

를 얻을. 그러나이 문제를 해결하는 방법은 이전 형식의 서식을 사용하지 않고 새로운 방식으로 오류를 표시하는 것이 아닌가?

답변

0

Str.decode(encoding='UTF-8',errors='strict') 방법을 사용해보십시오. Python doc을 참조하십시오.

예 :

"{}".format(msg.decode(errors='replace')) 
+0

하지 작동합니다. 1. 나는 모든 러시아어 텍스트가 제거되고 그 이유가 2이기 때문에 어떤 것도 대체 할 수 없다. 문제는 어떻게 든 문자열 ""{} "이 (는)''ascii '인코딩을 갖는다는 것이다. 그 이유는 유니 코드 러시아 문자열 인'msg'가'ascii '로 변환 될 수 없기 때문입니다. 나는 RTFM을 가지고 있고 나는 py 파일의 헤더가 작동해야한다는 것을 안다. (나는이 헤더를'# - * - coding : utf-8 - * -'로 설정했다.) 그러나이 파일의 문자열은 여전히''ascii ''이다. 상수 문자열을 유니 코드로 명시 적으로 정의하면이 문제를 해결할 수 있습니다.''u ''로 문자열을 작성하면 오류가 발생하지 않습니다. 그러나 헤더가 작동하지 않는 이유는 무엇입니까? –