2012-10-01 3 views
0

doctrine2에서 어레이 유형과 관련된 문제점을 발견했습니다.Doctrine2 배열 유형 직렬화가 몇 가지 특수 문자와 함께 실패하는 이유는 무엇입니까?

내 앱에서 일부 사용자는 슬로베니아 출신입니다. 이 사람들은 "čćšž"와 같은 이상한 문자들을 가지고 있습니다. 이 값이 직렬화되어 데이터베이스에 저장되면 문제가 발생합니다. 공지 사항 : [function.unserialize]를 unserialize() :에서 오류 /Applications/MAMP/htdocs/firegames.at/vendor/doctrine-dbal/lib/에 456의 645 바이트를 오프셋 후

나는 expection가 다음 얻을 의 : 7 : 교리/DBAL/유형/ArrayType.php 라인

(46)는 그래서 직렬화 함정 수사에 다음과 같은 내용이 expection 트리거 것을 알아 냈어? "Urani을"

하지만 우라 니치 여야합니다. 문자열을 utf8로 변환하려고 시도했지만 실패합니다. chars 인코딩 할 수 없습니다!

?을 대체하면 중재가됩니까? 그것은 예상대로 작동합니다. 또한 이상한 점은 char ž는 문제가되지 않는다는 것입니다. 그것이 유일한 방법입니다.

그래서 누구나 어떻게 해결할 수 있을까요?

답변

1

DB에 연결할 때 "SET NAMES utf8"을 수행하도록 DBAL에게 명령하십시오. 이것은 charset='utf8' 매개 변수를 config에 전달하여 수행됩니다. documentation을 읽으십시오. PDO MySQL과 OCI (Oracle)에서만 가능하지만 MySQL을 사용하고 있다고 가정합니다.

또한 CHARACTER SET utf8 COLLATE utf8_slovenian_ci을 사용하여 표 셀을 생성 했습니까?

+0

thx, 귀하의 답변은 지금 작동 중입니다. – sensi

관련 문제