as3:~/ngokevin-site# nano content/blog/20140114_test-chinese.mkd
as3:~/ngokevin-site# wok
Traceback (most recent call last):
File "/usr/local/bin/wok", line 4, in
Engine()
File "/usr/local/lib/python2.7/site-packages/wok/engine.py", line 104, in init
self.load_pages()
File "/usr/local/lib/python2.7/site-packages/wok/engine.py", line 238, in load_pages
p = Page.from_file(os.path.join(root, f), self.options, self, renderer)
File "/usr/local/lib/python2.7/site-packages/wok/page.py", line 111, in from_file
page.meta['content'] = page.renderer.render(page.original)
File "/usr/local/lib/python2.7/site-packages/wok/renderers.py", line 46, in render
return markdown(plain, Markdown.plugins)
File "/usr/local/lib/python2.7/site-packages/markdown/init.py", line 419, in markdown
return md.convert(text)
File "/usr/local/lib/python2.7/site-packages/markdown/init.py", line 281, in convert
source = unicode(source)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 1: ordinal not in range(128). -- Note: Markdown only accepts unicode input!
어떻게 해결할 수 있는가?
일부 다른 정적 어플리케이션, 파이썬 기반 블로그 포스트 중국 성공적으로 게시되어야 수 있습니다. 이 같은 app: http://github.com/vrypan/bucket3. 중국 내 사이트 (http://bc3.brite.biz/) 를 성공적으로 게시되어야 수 있습니다.
'이니고데데코디로어: # 39, & # 39 ascii&. '무슨 일이 있어도 할 때, 일반적으로 디코딩합니다 바이트입니다 can& 코텍이 t # 39 는 파이썬 유니코드 문자열을 ascii 가 아닌' 확장자입니다 str 변환하십시오 2.x '를 지정하지 않고, 원래 인코딩입니다 구체화하십시오. 간단히 말해, 유니코드 문자열을 포함하지 않는 유형 () 는 완전히 분리된 파이썬 문자열이어야 인코딩입니다. 그들은 단지 잠시 보관할 수 있는 점, 따라서 모든 유니코드 point) 유니코드 코드 전체 다룬다. Utf-8, UTF-16, 텍스트, 베이트 문장열 컨테인먼트하는 인코딩되지 등 유니코드 문자열을 iso 8895 1 gbk big5 디코딩될 수 및 인코딩됩니다 문장열 유니코드 있다. 항상 있는 텍스트 파일 및 데이터 리스토어가 전출요 인코딩되지 써줬지 아마도 이 마크다운 모듈에서는 유니코드 () ' (여기에 idfsysobject. 발생하며) 를 사용하여 만든' 퀄리티 게이트 나머지 새 유니코드 문자열을 ASCII 코드 - 재 포장 또는 기존 유니코드 문장열 전환할 예정이다. # 39 의 가격인하 can& 모르는 이가, 유니코드 인코딩 수신 문자열이어야 의존할 수 있을 것입니다 디코딩합니다 문장열 문장열 가격인하 반군지역 전에 수 있습니다. 유니코드 문자열을 사용하여 접두어입니다 써줬지 코드에서 'u' 를 선언할 수 있습니다. E. g.
>>> my_u = u'my ünicôdé strįng'
>>> type(my_u)
<type 'unicode'>
유니코드 문자열을 따라오렴 파일로부터는, 데이터베이스, 네트워크 모듈 수도 있습니다. 이 경우, t need to # 39 너회가 don& 걱정 인코딩입니다.
유니코드 변환 str '에서', '명시적으로 don& 때에도 발생할 수 있는 t # 39 호출하십시오 유니코드 ()'. 이로 인해 '다음' 이니고데데코디로어 시나리오용으로 예외:
# Explicit conversion without encoding
unicode('€')
# New style format string into Unicode string
# Python will try to convert value string to Unicode first
u"The currency is: {}".format('€')
# Old style format string into Unicode string
# Python will try to convert value string to Unicode first
u'The currency is: %s' % '€'
# Append string to Unicode
# Python will try to convert string to Unicode first
u'The currency is: ' + '€'
다음 그림에서 볼 수 있습니다 '라는 단어를 어떻게 caf& # 233,' 중 하나로, UTF-8" " 인코딩되지 왔다. 또는 " Cp1252"; 인코딩입니다 터미널의 종류에 따라. 두 예에서 'caf' 는 단순히 일반 ascii. & # 233, ',' 는 두 가지 방법으로 UTF-8 인코딩되지 바이트입니다. & # 233 에 " Cp1252";; 는 0xE9 (수도 있는 변화가 발생합니까 포지셔닝합니다 유니코드 점 (# 39, 우연히 it& 게 전혀 없다). '를 파이썬 유니코드 호출되었을 및 변환 ()' 가 올바른 디코딩합니다 성공했습니다. ! [구성도를 문자열으로 파이썬 유니코드 문자열을 변환될 수 있다] [1] 이 그림은 디코딩합니다 () '에서' 호출됨 ascii '을 (를)' 즉 '유니코드 인코딩 없이 동일합니까 호출하십시오 ()' 등을 감안할 때). # 39 로 ASCII can& 'a', '우' 보다, 이렇게 하면 t 컨테인먼트하는 바이트입니다 0x7F 이니고데데코디로어 예외: ! [다이어그램 문자열으로 파이썬 유니코드 문자열을 변환될 수 있는 잘못된 인코딩입니다] [2]
처리해야 할 경우, 유니코드 문자열을 ascii 를 소스 코드 'u' 를 통해 문장열 접두사가 만들기만 하면 됩니다. E. g.
u'Zürich'
파이썬 소스 코드를 추가할 수 있도록 너회의 디코딩합니다 합니다 인코딩 헤더입니다 실제 인코딩입니다 일치시키려면 현재 파일. 예를 들어, & # 39,, # 39 는 파일의 경우 인코딩됩니다 UTF-8& 사용합니다.
# encoding: utf-8
이것은 비 ascii 에 있을 때 필요한 것만 출처 코드*의. 파일을 # # Ascii 가 아닌 데이터는 일반적으로 파일에서 받았다. 입출력 (i / o) '는' 를 사용하여 파일에 있는 모듈에서는 테스트라이퍼 디코딩하여 즉석에서 주어진 '인코딩입니다'. 이 파일에 대한 올바른 인코딩을 사용해야 합니다 - # 39, 막 can& 간편하게 사용할 수 없다. 예를 들어, UTF-8 파일:
import io
with io.open("my_utf8_file.txt", "r", encoding="utf-8") as my_file:
my_unicode_string = my_file.read()
그런 다음 수 '가격인하' my_unicode_string 적합하지 반군지역. '선 ()' 에서 '읽기' 이니고데데코디로어 경우 어졌다면 you& # 39, ve 잘못된 인코딩입니다 값을 사용할 것이다.
& # 128553, 파이썬 2.7 CSV 모듈에서는 비 ascii 문자를 지원하지 않습니다. 그러나 (https://pypi.python.org/pypi/backports.csv.) 를 통해 편리하게 사용할 수 있습니다 하지만 열린 파일을 사용하여 전달하십시오 그들위에 it like it.
from backports import csv
import io
with io.open("my_utf8_file.txt", "r", encoding="utf-8") as my_file:
for row in csv.reader(my_file):
yield row
파이썬 유니코드 data-in 반환할 수 있지만 일반적으로 필요한 대부분의 데이터베이스 드라이버 리틀이에요 구성. 유니코드 문자열을 항상 flfile. SQL 질의입니다.
이 연결 문자열을 추가:
charset='utf8',
use_unicode=True
E. g.
>>> db = MySQLdb.connect(host="localhost", user='root', passwd='passwd', db='sandbox', use_unicode=True, charset="utf8")
Postgresql # # 추가:
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)
웹 페이지 인코딩할 수 있는 거의 모든 인코딩입니다. 헤더 필드를 포함해야 합니다 '이' 콘텐트 유형 '에서' 문자세트 띄우고 인코딩입니다. 이 값을 수동으로 아니했으니 컨텐트에서 디코딩할 수 할 수 있습니다. [파이썬 요청률] [4] '또는' 에서 유니코드 되돌려줍니다 레스폰지스테스트.
만약 수동으로 디코딩합니다 합니다 (인코딩) ',' 할 수 있는 'my_string.decode 문장열 됩니다' 는 해당 인코딩입니다 인코딩입니다. 여기에 윈도 2.x 지원되는 코덱을 주어져 있다. [표준 인코딩] [5]. 아마 다음 다시 나타날 경우 ',' ve got the wrong 이니고데데코디로어 you& # 39 인코딩입니다.
보통 때처럼 유니코드 작동합니까 str.
'쓰기' 를 통해 인쇄하십시오 stdout 스트리밍합니다. Python 에서 할 수 있도록 인코더를 구성려면 stdout 유니코드 인코딩됩니다 console& # 39 의 인코딩입니다. 예를 들어, ',' s '는' en_GB.UTF-8 출력물에는 로케일에 linux*용 shell& # 39, UTF-8 로 인코딩됨 ''. Windows 에서 코드 페이지를 충족되었으며 8bit 제한될 수 있습니다. 잘못 구성된 콘솔입니다 손상됨 로케일과 등 예상치 못한 인쇄하십시오 오류가 발생할 수 있습니다. '강제' 환경 변수를 위한 인코딩입니다 stdout 피토니오니코딩 수 있습니다. 파일을 # # 마찬가지로 ',' 이오오픈 입력입니다 투명하게 유니코드 변환하시겠습니까 인코딩되지 바이트입니다 써줬지 위해 사용할 수 있습니다.
동일한 구성을 판독값 유니코드 직접 쓸 수 있을 것으로 전망된다.
다만 2.x 는 파이썬 유니코드 파이썬 3 은 더 이상 할 수 있는 것보다 조금 못 미치는 너무 낮다. E. g '일반' str 이제 나이가 이제 '바이트입니다' '' 유니코드 문자열을 str. 기본값입니다 인코딩은 UTF-8 인코딩 () 는 ',' 네가 만일 이데코드 바이트입니다 구체화하십시오 주지 않고, 파이썬 3 UTF-8 인코딩을 사용합니다. 아마도 이 people& 50% # 39 의 유니코드 문제 수정. 또한 '오픈 ()' 는 기본적으로 텍스트 모드 '때문에' 디코딩 되돌려줍니다 str (유니코드 수준들과). 이 인코딩은 utf-8 수 있는 사용자 로케일에 파생됨 경향이 있는 8 비트 코드 페이지 1251년 indows n * 시스템 또는 같은, windows 의 내려왔습니다.
[4]: http://docs.python-requests.org/en/master/ " Python-Requests"; [5]: https://docs.python.org/2/library/codecs.html # 표준 인코딩 ", 표준 encodings".
as3:/usr/local/lib/python2.7/site-packages# cat sitecustomize.py
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
as3:~/ngokevin-site# python
Python 2.7.6 (default, Dec 6 2013, 14:49:02)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.getdefaultencoding()
'utf8'
>>>
위의 utf8 '는' 은 기본 인코딩을 파이썬. 그럼 오류: 더 이상.
이것은 유니코드 issue" 클래식 ";). 스택 오버플로 (i believe 는 완전히 설명할 수 있는 이 범위를 넘어서는 위해 오토메이티드 설명하란말야 무슨일인거죠.
Here 것은 익히 설명했다.
아주 간단한 요약, 당신은 무엇을 하는 지 생각하신거야 진행 중인 것으로 해석되는 일련의 바이트 유니코드 문자 (ascii) 에 다시 디코딩합니다 있지만 기본적으로 코텍이 못하고 있다.
내가 이 조언을 제공할 수 있는 프레젠테이션입니다 abc. 피할 수 있습니다. 원하는 대로, 유니코드 코드 a " sandwich". 파이썬 2 '에서' 의 사용은 future 가져오기의 unicode_literals 도움이 됩니다.
업데이트: 코드를 어떻게 해결해야 할 수 있습니다.
확인 - in your 가변으로 " source"; 당신은 일부 바이트입니다. 당신 안에 있는 것은 그들이 어떻게 읽었던 잡을라는데 선택해제합니다 질문을 통해 웹 브라우저에서 양식? 어떤 경우든 않은 것으로 보고 있지만, 파이썬 유니코드 인코딩된 ascii 로 변환하십시오 함께 하는 것입니다. You need to tell it 명시적으로 어떤 인코딩입니다 있다. 즉, 어떤 인코딩은 know 합니다! 항상 쉬운 것은 전적으로 달려 있으며, 여기에서 이 구체화하십시오 출신이다. 예를 들어 몇 가지 일반적인 인코딩을 UTF-8 시험해볼 수 있습니다. 유니코드 인코딩 () 로 두번째 알 수 있습니다.
source = unicode(source, 'utf-8')
I was 검색: 해결하십시오 다음 오류 메시지:
>. 이니고데데코디로어: # 39, & # 39 ascii&. # 39 의 5454 포지셔닝하십시오 디코딩합니다 바이트입니다 0xe2 can& 코텍이, t: 서수 않는 범위 (128)
f = open('../glove/glove.6B.100d.txt', encoding="utf-8")
하는 데 도움이 될 수 있다는 것.
"UnicodeDecodeError: 'ascii' codec can't decode byte"
이 때문에 error:: 유니코드 있어야 하지만 input_string str 지정되었습니다.
"TypeError: Decoding Unicode is not supported"
이 때문에 error:: 유니코드 (unicode input_string 로 변환할 수 없을 것이다.
그래서 먼저 확인 및 필요한 경우 해당 input_string 유니코드 변환하시겠습니까 '는' str.
if isinstance(input_string, str):
input_string = unicode(input_string, 'utf-8')
둘째, 위 그냥 유형 변경 비사양 ascii 문자 제거되지는 않습니다. 지루려면 스케쳐내 비 ascii 문자:
if isinstance(input_string, str):
input_string = input_string.decode('ascii', 'ignore').encode('ascii') #note: this removes the character and encodes back to string.
elif isinstance(input_string, unicode):
input_string = input_string.encode('ascii', 'ignore')
그러나 이것은 유니코드 - 최고의 방법은 항상 다운로드합니까 변환하시겠습니까 어려움 때문에 실제로 you& 달성할 수 있는 모든 인수를 변환하시겠습니까; d # 39 확인 및 기능 및 방법을 쓰기 판매업체에서 포함하는 모든 형태의 문자열 처리.
그래서 다음 중 하나를 사용할 수 있는 내놨고, 또는 바이트입니다 문장열 외곽진입 작성하더라도 유니코드 입력입니다. 한마디로 [포함시키십시오 및 사용] [1] 다음 람다.
# guarantee unicode string
_u = lambda t: t.decode('UTF-8', 'replace') if isinstance(t, str) else t
_uu = lambda *tt: tuple(_u(t) for t in tt)
# guarantee byte string in UTF8 encoding
_u8 = lambda t: t.encode('UTF-8', 'replace') if isinstance(t, unicode) else t
_uu8 = lambda *tt: tuple(_u8(t) for t in tt)
예를 들면 다음과 같다:
text='Some string with codes > 127, like Zürich'
utext=u'Some string with codes > 127, like Zürich'
print "==> with _u, _uu"
print _u(text), type(_u(text))
print _u(utext), type(_u(utext))
print _uu(text, utext), type(_uu(text, utext))
print "==> with u8, uu8"
print _u8(text), type(_u8(text))
print _u8(utext), type(_u8(utext))
print _uu8(text, utext), type(_uu8(text, utext))
# with % formatting, always use _u() and _uu()
print "Some unknown input %s" % _u(text)
print "Multiple inputs %s, %s" % _uu(text, text)
# but with string.format be sure to always work with unicode strings
print u"Also works with formats: {}".format(_u(text))
print u"Also works with formats: {},{}".format(*_uu(text, text))
# ... or use _u8 and _uu8, because string.format expects byte strings
print "Also works with formats: {}".format(_u8(text))
print "Also works with formats: {},{}".format(*_uu8(text, text))
[1]: https://gist.github.com/miraculixx/84ac194c77f04817eeb3 # 파일 복사 스트린게스트 [2]: https://gist.github.com/miraculixx/84ac194c77f04817eeb3 # 파일 복사 아시히데코디로어
운영 체제 수준 있는 설치 확인을 위해 협력하였습니다 해결하십시오 unbuntu 다음과 같다. "'쉘로 $ 로케일에 샤르마프 "'
나타날 경우
"' 로케일에: 기본 로케일에 LC_CTYPE 설정할 수 없습니다. No such file or directory "' 대신 "' UTF-8 "" '다음' 와 '세트' LC_CTYPE LC_ALL 다음과 같습니다. "'쉘로 $ 익스포트를 LC_ALL = " en_US.UTF-8"; = $ 익스포트를 LC_CTYPE " en_US.UTF-8"; "'
이 같은 오류를 해결할 잡을라는데 내 오류:. 감사합니다! 파이썬 2 와 파이썬 유니코드 취급료 호환되지 않는 로드하기에 소금에 절인 파일을 꽤 있어 3 차이가 납니다. 그래서 파이썬 pickle& 사용하여 # 39 의 인코딩입니다 인수. 내가 어렸을 때 아래 링크를 통해 유사한 문제 해결을 위해 노력하고 있는 반면, 내 데이터 파일 열기 소금에 절인 from my 파이썬 3.7 절약되었습니까 당초 파이썬 2.x 버전을. https://blog.modest-destiny.com/posts/python-2-and-3-compatible-pickle-save-and-load/ > <; 난 내 스크립트입니다 복사합니다를 load_pickle 기능을 하는 동안 내 load_pickle (pickle_file) 및 로드중 input_data 다음과 같습니다.
input_data = load_pickle("my_dataset.pkl")
이 load_pickle 기능을 사용할 수 있습니다.
def load_pickle(pickle_file):
try:
with open(pickle_file, 'rb') as f:
pickle_data = pickle.load(f)
except UnicodeDecodeError as e:
with open(pickle_file, 'rb') as f:
pickle_data = pickle.load(f, encoding='latin1')
except Exception as e:
print('Unable to load data ', pickle_file, ':', e)
raise
return pickle_data
한마디로 적절하게 유니코드 처리 파이썬 2:
난 이미 같은 오류가 포함된 url 을 통해 ascii 가 아닌 자 (바이트입니다 값으로 >. 128), 내 해결책:
url = url.decode('utf8').encode('utf-8')
참고: utf-8 로 앨리어스가 utf8 뿐입니다. # 39, & # 39 만 사용하면 utf8&. # 39, & # 39 또는 utf-8&. 같은 방법으로 노력해야 합니다
제 경우에는, 예를 들어, & # 39 의 파이썬 2.7, 내가 이 할당에서는 변경일 가져다줄래요 협력했습니다 something& # 39;; str '에서' 에서 '의 내부 representation-i.e. 얻게된다면 docname 디코딩 기능을 제공해 적절한 백업되지 바이트 순서를 마지막으로 uirl' 매직 '모든' 적절한 위치에 있는 utf-8 붙여넣습니다 string str. 파이썬 유니코드 인할지 검정입니다 매직 for me. 도움이 된다.
그리고 우리는 이 오류가 발생할 때 몇 가지 작업을 수행하지 않고 그 문자열을 ASCII 문자로 비사양 lionbridge 문자열이어야 이벤트수정적절한 디코딩. 이 날 이 문제를 해결할 수 있도록. 나는 판독값 CSV 파일의 디코딩 문자이어야 항목이없습니다 열이 있는 ID, 텍스트, 아래와 같이.
train_df = pd.read_csv("Example.csv")
train_data = train_df.values
for i in train_data:
print("ID :" + i[0])
text = i[1].decode("utf-8",errors="ignore").strip().lower()
print("Text: " + text)
받을시간은 장고 (1.9.10) / 파이썬 2.7.5 프로젝트 ',' 나는 자주 이니고데데코디로어 예외 유니코드 문자열을 할 때 주로 채우기할 시도하시겠습니까 로깅하기. I made a 도우미 기능을 기본적으로 8 비트 ascii 문자열 및 재장착에 형식을 임의의 객체를 & # 39, & # 39 테이블에서 모든 아닌 문자가?;). 그러나 최선의 해결책이 아닌 it& 생쥐라. # 39 의 기본 인코딩은 ascii (쉐퍼드도 don& # 39, t want 변경하십시오) 이 됩니다.
< pre>; 데프 encode_forlogging (& # 39, c, 인코딩입니다 = ascii& # 39;): 만약 이신스턴스 (c, 배서스트링): (# 39, & # 39 인코딩입니다 replace&;;) 크리스토퍼니고데 반품하십시오. 엘리프 이신스턴스 (c, 이트레이블): c = [] v 에 대해 c: c_.append (encode_forlogging (v, 인코딩입니다)) c 반품하십시오. 다른: encode_for_logging 반품하십시오 (유니코드 (c)) '/pre> <;
내 이 솔루션을 슬라이드에서는 추가하기만 인코딩입니다. '에 오픈 (& # 39, 파일, 인코딩입니다 = utf8& # 39;) f '로
시간이 오래 걸릴 수 있기 때문에 판독값 글러브 파일은 추천합니까 누마피 나 글러브 파일을 파일. 읽을 때 포함, 그렇지 않을 때 네스 급지합니다 먹이좀 하게하면서요.
import numpy as np
from tqdm import tqdm
def load_glove(file):
"""Loads GloVe vectors in numpy array.
Args:
file (str): a path to a glove file.
Return:
dict: a dict of numpy arrays.
"""
embeddings_index = {}
with open(file, encoding='utf8') as f:
for i, line in tqdm(enumerate(f)):
values = line.split()
word = ''.join(values[:-300])
coefs = np.asarray(values[-300:], dtype='float32')
embeddings_index[word] = coefs
return embeddings_index
# EMBEDDING_PATH = '../embedding_weights/glove.840B.300d.txt'
EMBEDDING_PATH = 'glove.840B.300d.txt'
embeddings = load_glove(EMBEDDING_PATH)
np.save('glove_embeddings.npy', embeddings)
사진을 링크: https://gist.github.com/BrambleXu/634a844cdd3cd04bb2e3ba3c83aef227