2012-09-04 6 views
0

내가 MongoDB를에 사용자가 제공 한 문자열을 저장하려고하지만 정상화를 저장하기 전에이 작업을하고 있어요에 저장합니다트림, 소문자, 대문자 단어와 MongoDB를

ucwords(mb_strtolower(trim($name)))

을하지만 그건 MongoDB를 던져하게 "øøå"와 같은 문자가있는 MongoException.

"mb_"가 UTF-8에서 제대로 작동하는 것으로 생각 했습니까? 일반 strtolower를 사용하여 문제를 해결합니다.

감사

+0

실제로 utf8로 바꾸려면 'utf8_encode()'를 먼저 실행 하시겠습니까? :) –

답변

1

당신은 PHP 5.4에있는 경우, 디폴트의 캐릭터 세트는 UTF-8로 ISO-8859-1에서 변경되었습니다. $ 이름과 인코딩이 ISO-8859-1 또는 UTF-8

0

MongoDB를 항상 기대하고 UTF-8 문자열이 아닌 경우를 제외하고

하여 strtolower는 당신을위한 완벽한 작업을 수행해야합니다.

@JvdBerg는 PHP 5.4가 UTF-8이 아니기 전에 PHP에 의존하지만 기본값이 "iconv"또는 "utf8_encode"인 문자열을 "인코딩"해야한다고 말합니다. 그것은 당신이 오래된 PHP를 사용하고 있고 문자열이 실제로 ISO로 인 코드 된 것일 가능성이 큽니다.

mb_ 함수는 변환 할 때 멀티 바이트 문자를 고려하기 만하면 문자열을 인코딩하지 않습니다.

관련 문제