요청을 전처리하기 위해 파이썬과 정보를 저장하는 MySQL 데이터베이스를 사용하여 웹 사이트를 개발 중입니다.이 이중 인코딩을 해결하는 방법은 무엇입니까?
내 모든 테이블은 utf8이고 utf8도 Content-type으로 사용됩니다.
print results.encode("utf-8")
가를 표시합니다 :이 같은 간단한 SELECT 쿼리의 결과를 인쇄 호스팅 내에서 GoDaddy에 대한 간단한 테스트를 실행
database_connection = MySQLdb.connect(host = database_host, user = database_username, passwd = database_password, db = database_name, use_unicode = True)
cursor = database_connection.cursor()
cursor.execute("""SET NAMES utf8;""");
cursor.execute("""SET CHARACTER SET utf8;""");
cursor.execute("""SET character_set_connection=utf8;""");
:
나는 DB에 연결을 설정하기 위해이 코드를 이중으로 인코딩 된 문자열. (따라서 ASCII 문자가 아닌 모든 문자는 두 개의 다른 스페셜로 변환됩니다.) 그러나 encode 문을두면 ASCII 문자가 아닌 문자 각각에 대해 인코딩 오류가 발생합니다.
어떻게 결과가 표시됩니까? 웹 페이지에서? 당신 SSHing에 있습니까? 추측 해 보면 올바르게 인코딩되었지만 latin-1과 같은 싱글 바이트 인코딩이 필요한 환경에 표시되고 있습니다. –
결과가 웹 페이지에 표시됩니다. 특수 문자를 표시하므로 환경이 유니 코드와 호환되어야합니다. 문제는 그것이 두 배로 인코딩 된 것 같습니다. ASCII가 아닌 모든 문자는 두 개의 다른 문자로 표시됩니다. 예를 들어 "ó"(작은 o는 예음) 문자는 "³"및 "ö"(소문자와 분음 기호)는 "¶"로 표시되지만 "ő" o)를 단 하나의 글자 "Å"로 사용하십시오. – kdani
불행히도 '특수 문자'보다 복잡합니다. 다양한 문자 인코딩이 있으며 웹 브라우저는 HTTP 헤더와 HTML 메타 태그를 사용하여 어느 것을 사용할 것인지 결정합니다. Firefox를 사용하는 경우보기, 문자 인코딩, UTF-8을 사용하여이를 재정의 할 수 있습니다. 이것이 문제라면 HTML 템플릿을 수정해야 할 것입니다. –