2013-08-12 3 views
0

모든 것이 UTF-8 (파일 인코딩, MySQL [그러나 저는 사용하지 않습니다], Apache, meta, mbstring 등)으로 설정되어 있지만 확인해보십시오 :PHP 문자열 배열 UTF-8 인코딩이 실패합니다.

$s="áéőúöüóűí"; 
echo $s; //works perfectly 

echo $s[0] // doesn't work. Prints out a single '?'. 

나는 거의 모든 것을 시도했습니다. 어떤 아이디어? 미리 감사드립니다!

답변

3

이것은 올바른 동작입니다. 당신이 멀티 바이트 문자열에서 첫 편지을 얻으려면

하지 첫 번째 바이트 진 문자열에서, 당신은 mb_substr() 사용해야합니다 :

mb_internal_encoding("UTF-8"); 
echo mb_substr($s,0,1); 
+0

타 방법이 있나요으로 변경? 이것은 어째서 원인입니까? 최근에 문제가 아니었기 때문에 아마 새로운 PHP 버전일까요? – user2302838

+0

다른 방법 * * *? 그리고 왜*? 지금 당장 어떤 문제가 있습니까? –

+0

나는 이미 CMS 시스템을 작성했으며이 문제를 처리하지 못했습니다 ... 모든 코드를 다시 작성해야하는 경우 큰 문제가됩니다. – user2302838

2

멀티 바이트 문자열에는 mb_* 함수를 사용해야합니다. 귀하의 경우에는 mb_substr()입니다.

0

을 그리고 당신은 $를 정의하는 경우 s [0] = "á", 작동합니까? 나는 UTF-8로 인코딩 될 때, 그 특별한 문자들은 두 개의 UTF-chars에 저장된다고 믿는다. 당신이 ANSI 일부 UTF-8 텍스트를 표시하는 경우

, 그것은 다음과 같이 표현된다 áà © oúöüóuÃ

을 당신은 그래서 첫 번째 문자 ($를들 [렌더링 á 하게 볼 0]) 만이 테이블 구조로 이동 데이터베이스의 일부를 변경할 필요가 불완전한 문자

+0

$ s [0] = "á"을 정의 할 때; echo $ s [0]; 그것은 완벽하게 작동하지만, 내가하는 일에 상관없이, 나는 어떤 문자 나 이상한 문자를 얻지 못합니다. – user2302838

-1

인 "A"를 표시 할

당신이 열 "정렬"

을 찾을 수 있습니다

당신이 오른쪽 메뉴

기본 데이터 정렬이에 클릭 편집을 변경할 열 - 'latin1_general_ci' 'utf8_general_ci'enter image description here

관련 문제