2011-02-03 2 views
1

방금 ​​오늘 이상한 문제가 발생했습니다 :PHP ctype_print - Windows 및 Linux에서 다른 동작이 발생합니까?

내 컴퓨터에서 ctype_print ("äöütest")가 true를 반환했습니다.

하지만 내 리눅스 머신 (debian)에있을 때, false를 반환했습니다.

php.net 설명서에서 로케일 세트가이 문제에 영향을 줄 수 있음을 읽었습니다. 어떻게 변경할 수 있습니까?

편집 : 실제로 - 내 로컬 컴퓨터에

setlocale(LC_ALL, null) 

을 실행할 때 서버에

German_Germany.1252 내가

를 얻을 수 C

현명한 기본값은 무엇입니까? 로케일/fr_FR의/LC_MESSAGES/mydomain.mo이 같은

답변

3

뭔가 내가 UTF-8

<?php 
$codeset = "UTF8"; // warning ! not UTF-8 with dash '-' 

// for windows compatibility (e.g. xampp) : theses 3 lines are useless for linux systems 

putenv('LANG='.$lang.'.'.$codeset); 
putenv('LANGUAGE='.$lang.'.'.$codeset); 
bind_textdomain_codeset('mydomain', $codeset); 

// set locale 
bindtextdomain('mydomain', ABSPATH.'/locale/'); 
setlocale(LC_ALL, $lang.'.'.$codeset); 
textdomain('mydomain'); 
?> 
로케일의 디렉토리 구조 (예를 들어)입니다

로 설정

// set locale encoding ISO-8859-2 
    // pl_PL for Linux 
    // polish_Poland.28592 for Windows 
    if (PHP_OS == 'WINNT') { 
    setlocale(LC_ALL, 'polish_Poland.28592'); 
    } else { 
    setlocale(LC_ALL, 'pl_PL'); 
    } 

를 추측 로캘/ko_KR/LC_MESSAGES/mydomain.mo

이고 ABSPATH는 로캘 디렉터리의 절대 경로입니다

리눅스 시스템에서는 'locale-gen'을 사용하여 OS 레벨에서 로켈을 생성해야 할 필요가있는 것으로 보입니다.

+0

전체 UTF8 문자 세트를 사용하고 싶습니다. 또는이 코드는 실제로 로캘 코드 일 뿐이므로 선택해야합니까? –

+0

@Sebastian : 편집 된 답변 참조. 네, 그냥 로케일 코드입니다. – ayush

관련 문제