2011-02-03 11 views
1

今日私はちょうど奇妙な問題を経験しました:PHP ctype_print - WindowsとLinuxで異なる動作ですか?

私のWindowsマシンでは、ctype_print( "äöütest")がtrueを返しました。

私は自分のLinuxマシン(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'); 
    } 

を推測します ロケール/ en_US/LC_MESSAGES/mydomain.mo

ABSPATHはロケールディレクトリの絶対パスです

さらに、Linuxシステムでは、 'locale-gen'を使ってosレベルでロケールを作成する必要があるようです。

+0

ただし、UTF8文字セット全体を使用したいと思っていますか?それとも、これは本当にロケールコードですか、私は1つを選択する必要がありますか? –

+0

@セバスチャン:編集済みの回答を参照してください。はい、それは単にロケールコードです。 – ayush

関連する問題