2014-07-15 2 views
0

최근 러시아어 키릴 문자를 데이터베이스에 삽입하려고 할 때 몇 가지 문제가 발생했습니다. symfony2 프레임 워크에서 Doctrine ORM과 Nginx 웹 서버를 사용하고 있습니다. 데이터베이스는 PostgreSQL입니다. 그 열의 발생과 가진 다른되지 않습니다symfony 2 데이터베이스에 키릴 문자 삽입

SQLSTATE[22021]: Character not in repertoire: 7 ERREUR: invalid byte sequence for encoding « UTF8 » : 0xd1 

그리고 가장 이상한 : 문제는 내가 열에서 러시아어 텍스트를 삽입 할 때, 나는이 메시지와 함께 500 내부 서버 오류가 종종 발생 동일한 문자열 ... 내 PHP 파일과 DB는 UTF8에서 올바르게 인코딩됩니다.

누군가 이미 동일한 문제가 발생하여 해결 되었습니까? 도움을 많이 주셔서 감사합니다.

psql의 행의 \ L 요청 인코딩 UTF8 및 부씩 및 CTYPE 표시 fr_FR.UTF을 -8-

server_encoding UTF8 

client_encoding UTF8 

답변

0

그 에러가 서로 동일한 문자열 한 열에 만하면 보여 어떤 내놓고 그건 내가 fr_FR의 바이트 범위는 키릴 문자와 다르기 때문에 Ctype fr_FR.UTF-8으로 인해 문제가 확실하게 관련되어 있기 때문에 오류를 제공하는 열에 올바른 데이터 정렬이 필요하다는 것을 알아야한다고 생각합니다.

나는 모든 테이블/데이터 정렬이 인 utf-8 유니 코드 (또는 일반)으로 인코딩 된 mysql db에서 키릴 문자를 관리합니다.

희망이 도움이됩니다.

+0

안녕하세요, 귀하의 답변에 감사드립니다. 데이터 정렬을 변경하려면 새 db를 만들어야합니다. 맞습니까? 그러나 SQL 요청을 사용하여 키릴 문자를 삽입 할 수 있습니다. 아마도 심포니에서 문제가 발생했을 수 있습니까? – user3816913

+0

그 테이블이 "Ctype fr_FR.UTF-8"을 가지고있는 것이 유일하다면 그 테이블 만 변경하면됩니다. 그렇지 않으면 오른쪽 매개 변수를 사용하여 모든 데이터를 새 데이터베이스로 마이그레이션하는 것이 좋습니다. 내가 잘 기억하고 필요한 것을 잘 이해한다면 키릴 문자를 SQL Req에 삽입하기 전에 인코딩하지 않고 사용할 수 있습니다. 나는 문제가없는 길에서도 키릴 문자를 사용했다 (주의할만한 몇 가지 팁이있다) –