2009-10-21 2 views
4

하나의 사이트가 Solaris 및 기타 iconv 설정이 설치된 다른 서버로 이동되었습니다. 내가 알 수있는 바와 같이젠드 프레임 워크 및 iconv를 사용한 문자열 변환

Notice: iconv_strlen() [function.iconv-strlen]: Wrong charset, conversion from `UTF-8' to `UCS-4LE' is not allowed in /usr_files/phplibs/library/Zend/Validate/StringLength.php on line 213 

, 서버가 "UCS-4LE"에 대해 알고 않으며, 주요 문제 : 나는 젠드 프레임 워크에서 "StringLength"기능 무엇을 검증 할 때 이제 내 스크립트는이 오류와 함께 실패합니다.

서버 관리자가이 문제를 해결할 수 있다고 대답했습니다. 이 서버에서 ZF를 설치하는 방법에 대한 아이디어가 있습니까?

답변

1

iconv 라이브러리는 'UCS-4LE'로 인코딩 된 문자열을 예상했지만 'UTF-8'로 감지 된 문자열을 수신했습니다. 새로운 서버에는 다른 기본 인코딩이있을 것입니다. 세 번째 매개 변수를 constructor ('utf-8')으로 전달하십시오.

+0

tryied : mb_internal_encoding ("UTF-8"); iconv_set_encoding ("internal_encoding", "UTF-8"); iconv_set_encoding ("output_encoding", "UTF-8"); 작동하지 않습니다. – kubum

+0

죄송합니다. 내 잘못입니다. 업데이트 된 답변. – soulmerge

0

오래된 주제이지만, 오늘 xampp (Linux Suse, PHP 5.3.5, Zend Framework 1.11.10)을 실행하는 새로운 서버로 이동하면서이 문제가 나에게 찾아 왔습니다. 위의 오류는 다음 테스트 스크립트로 재현되었습니다.

<?php 
echo iconv_strlen("hello"); 
?> 

명령 줄과 브라우저 모두에서 재현했습니다. 몇 가지 문제 해결 후, 나는이 즉시 문제를 두 가지 방법 중 하나를 "해결"다음 발견 :

<?php 
echo iconv_strlen("hello", 'utf-8'); 
?> 

또는 그러나 작동하지 않았다 ZF의 iconv_set_encoding을 추가

<?php 
iconv_set_encoding("internal_encoding", "UTF-8"); 
echo iconv_strlen("hello"); 
?> 

. 의 iconv가 새 서버에서 최대의 역할을 왜 원래 이유는 나를 넘어 그러나 영구적으로 변경하는

변경 php.ini 파일은 ZF

[iconv] 
iconv.input_encoding = ISO-8859-1 
iconv.internal_encoding = UTF-8 
iconv.output_encoding = ISO-8859-1 

에 대한 작업을했다.