Diacritics 및 MB_Substr의 문제
문제
유니 코드 문자열을 디아크리코트 사용하여 슬라이스하고 있습니다 mb_substr
기능이지만 단순하게 사용하는대로 작동합니다 substr
기능. 유니 코드 문자를 반으로 나눕니다.
예를 들어
echo mb_substr('ááááá', 0, 5); //Displays áá�
무엇이 잘못되었을 수 있습니까?
해결책
인코딩을 마지막 매개 변수로 지정하지 않으면 같은 문제가 있습니다. mb_substr
: 적어도 내 서버에서 기본값이 ISO-8859-1
.
그러나 인코딩을 올바르게 설정하면 UTF-8
, 그것은 괜찮습니다 :
echo mb_substr('ááááá', 0, 5, 'UTF-8');
브라우저에서 올바른 디스플레이를 가져옵니다.
ááááá
보다 mb_substr
(인용, 강조 광산) :
string mb_substr ( string $str , int $start [,
int $length [, string $encoding ]] )
그만큼
encoding
매개 변수는 문자 인코딩입니다. 생략되면 내부 문자 인코딩 값이 사용됩니다..
다른 팁
나는 같은 문제가 있었고 위의 답변도 나에게 도움이되었습니다. 설정 옆 php.ini
또는 사용 ini_set()
, 또한 사용하는 데 도움이 될 수 있습니다 mb_internal_encoding('utf-8');
(utf-8
멀티 바이트 함수에 대한 영구 인코딩을 설정하기 위해 선택한 경우 교체 할 수 있습니다).
제휴하지 않습니다 StackOverflow