2017-09-28 26 views
-2

ローカルマシンでPHP CLIスクリプトを実行しています。これはAPIを呼び出し、UTFでエンコードされた文字列を受け取ります。さて、この文字列は基本的にはポルトガル語の単純な言葉ですが、画面(端末)に印刷すると正しく表示されます。ただし、別のマシンでは、一部の文字が正しく表示されません。問題は、他のマシンで文字列を正しく見るために、どのphp.iniオプションを設定する必要があるのでしょうか?私はエンコードに関してPHP.iniに触れておらず、すべて正常に動作するので、UTFがPHPのcliアプリケーションで動作するためには何が必要なのか分かりません。一部の文字が正しく表示されない

編集:これは端末の問題ではありません。具体的には、APIは配列内にあるはずの文字列(UTFエンコード)を返します。しかし、PHPは配列内でその文字列を見つけることができないという警告を別のマシン上で発行しています。キーが存在しないというエラーが表示され、表示されているキーまたは文字列が正しく表示されないため、そうです。

それは基本的に

$stringReturnedFromApi = $apiCall(); 
$this->myArray[$stringReturnedFromApi]; 

それはキーが存在しないことに不平を言っている他に、右の私のマシン上で動作し、私は$stringReturnedFromApを見上げたとき、それはUTFでエンコード見えない

+0

他のマシンは同じ種類の端末を使用していますか? – apokryfos

+0

はい、ほとんどすべてがPHPと同じです。 – Zed

+0

問題を示すために最小限のコードをお知らせください。 – deceze

答えて

0

他の端末はUTF-8エンコーディングに設定する必要があります。例えば、PuTTYはどのエンコーディングを伝える必要がありますか、よく覚えていればANSIを(Windows上で)使用します。

他のホストがWindows上にない場合は、ロケールがUTF-8であることを確認してください。これはあなたの側ではエラーではありません。これはクライアントサイドのエンコーディングです。

結果がWebページに出力される場合は、文字セットのエンコーディングもUTF8に設定されていることを確認してください。

+0

質問を更新しました詳細、ありがとう。 – Zed

+0

コード例を追加しましたので、もう一度見てください – Zed

+0

明示的にサーバーからutf8_encode( "value")を送信していますか?または、character_encodingを指定したヘッダーで "value"を送信するだけですか? –

0

これは実際にはPHPの問題であるとは確信していません。

あなたのスクリプトを見ることなく、何も言えませんが、PHPスクリプトが実際にUTF文字を正しく出力していると推測しています。奇妙に見える理由は、端末がUTFエンコーディングを理解できず、文字を表示できないためです。

実際の問題がどこにあるのかを判断するために使用しているターミナルアプリケーションの詳細については、もう少し具体的に説明する必要があります。私はそれがphp.iniで修正できるものだとは思わない

+0

あなたは_only guessing_なので、回答セクションを悪用する代わりにあなたの_guess_をコメントに入れてください.thanks –

+0

私は質問をもっと詳細に更新しました。 – Zed

+0

コード例を追加しましたのでもう一度見てください – Zed

関連する問題