2009-12-28 5 views
0

A-Z 문자가 아닌 문자를 삽입하는 데 문제가 있습니다. 예를 들어
:문자열에서 첫 번째 UTF-8 문자 가져 오기 DB에 저장

$fullTag = 'świat';

'letter'해야 ś

$data = array(
    'full_tag' => $fullTag, 
    'count'  => 1, 
    'letter' => $fullTag[0], 
); 

을 포함하지만 $table->insert($data);을 실행할 때, 그것은 letter 빈 문자열로 저를 삽입합니다.

$fullTag[0] 대신 고정 문자 ś을 설정하면 올바르게 작동합니다.

letter 열은 utf8_polish_cichar(1)

어떤 아이디어가?

답변

6

대신 $ fullTag [0], 멀티 바이트 부속 문자열 기능을 사용할 수 있습니다. .. 이러한 mb_ * 함수는 멀티 바이트 인코딩을 인식하므로 $ fullTag [0]은 1 바이트 만 제공 할 수 있습니다.

+0

'mb_strcut ($ fullTag, 0, 1, 'UTF-8')'로 시도했지만 작동하지 않습니다. 'mb_substr' 작동 - 이상한 ....... 이유를 알고 계십니까? 감사합니다. Jaanus! :-) – hsz

+1

'mb_strcut()'은 substr()이나 indexer-access와 똑같은 방식으로 작동하지만, 마지막 바이트가 잘린 것처럼 보이면 단순히 문자를 생략합니다. 귀하의 경우에'mb_strcut()'은 바이트 1에서 문자열을 자르면 잘못된 바이트 시퀀스가 ​​생길 것입니다. 그러므로 마지막 문자는 생략됩니다. –