質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

受付中

php コマンドプロンプト 標準入出力 文字化け

z.z
z.z

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1回答

0評価

0クリップ

207閲覧

投稿2022/08/19 05:35

編集2022/08/19 14:09

🔳問題
windows11のコマンドプロンプトで「php ファイル名.php」と入力してphpファイルを実行しました。
標準入力(キーボード)から受け取った文字列をそのまま標準出力(コマンドプロンプト)するプログラムで、文字化けしてしまいました。実行結果を載せていますが、「あいうえお」をプログラムに渡した結果です。

🔳ソースコード

<?php echo "入力してください\n"; $word = fgets(STDIN); echo($word); ?>

🔳実行結果

入力してください
あいうえお
�����

🔳質問したいこと
ソースコードはvscodeで作成したものです。文字コードはutf8です。ソースコードの文字コードは変更せずに、文字化けを防ぐ方法が聞きたいです。
windowsのコマンドプロンプトでutf8のphpファイルを文字化けせずに実行するのは不可能でしょうか。

🔳試したこと

・php.iniの設定確認。
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = Off
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.detect_order = auto
となっています。

・コマンドプロンプトの文字コード変更。
chcp 65001 ,chcp 932
どちらの場合でも文字化けしました。
どちらもフォントはMSゴシックです。

・コード内でmb_string_encoding()関数の使用
mb_string_encoding($word,"utf-8","sjis");
mb_stiring_encoding($word,"utf-8","sjis-win");
echo($word)の前に挿入して、それぞれ試しましたが文字化けは治りませんでした。
sjisでは相変わらず「�����」と表示され、sjis-winでは何も表示されず空白でした。

・powershell
powershellでも試してみました。
chcp 65001 MSゴシック設定では、mb_conver_encodingの使用の有無に関わらず、
「�����」と表示されてしまいます。

chcp 932 MSゴシック設定では、mb_convert_encodingにsjisを適用すると、
「@@@@@」と表示されました。sjis-winを適用した場合は「�����」となりました。
関数を使用しない場合も「�����」となってしまいました。

・vscodeのターミナルでの実行
文字化けしました。
mb_convert_encoding関数なしの場合、「`````」と文字化け。
mb_convert_encoding関数(sjis-win)使用の場合、「�����」と文字化け。
mb_convert_encdoing関数(sjis)使用の場合、「�����」と文字化け。
vscodeのターミナルを使うのは初めてなので、設定次第でうまくいくかもしれません。
もう少し調べてみます。

・ターミナルからコマンドプロンプト、powershellの起動
ターミナルからコマンドプロンプトまたはpowershellを起動して実行すると
ネットに書かれていたので、実行したところ文字化けしました。

・windows11のutf8設定
windows11では文字コードをutf8に設定できると調べて分かったので、
やってみましたが、文字化けしました。

・phpの再インストール
xamppでインストールしたphpを使用していたが、CLI版のphpをインストールし直してみた。文字化けしました。

・作成したphpファイルの文字コードを確認
vscodeの設定を見直しました。また、typeコマンドでphpファイルをコマンドプロンプト上で表示して、65001では正常に表示され、932では文字化けを起こしました。
以上からphpファイルはutf8で作成されていると判断しました。
イメージ説明

疲れたので諦めます。頭のいい誰かうまく出来たら教えてください。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

退会済みユーザー

退会済みユーザー

2022/08/19 05:45

ソースコード内に全角空白文字を使ってインデントしていますが、これを本当に実行したのですか?
z.z

2022/08/19 05:53

回答ありがとうございます。 phpファイルではtabキーを使っています。 こちらでソースコードを書き込む際、tabキーでうまく入力できず、全角空白で埋めてしまいました。 申し訳ございません。訂正試みます。
m.ts10806

2022/08/19 05:54

実際のソースコードそのまま提示すれば良いかと思います。
z.z

2022/08/19 06:00

すみません、お騒がせしました。 短いので手打ちしたのですが、軽率でした。 自分のphpファイルのソースを同様に書き込まないと混乱を招きますよね。 以後気を付けます。
m.ts10806

2022/08/19 06:10

質問は編集できますし、解決後も半永久に参照されることになります。 以後ではなく、今この質問をきちんと精査してください。
m.ts10806

2022/08/19 06:10

あと、コマンドプロンプト以外の実行方法も試してください。
z.z

2022/08/19 06:16

powershellでも試してみましたが、ダメでした。 空白になるか、「�����」と表示されてしまいます。
m.ts10806

2022/08/19 07:24

Apache通してブラウザから、 VSCode上での実行 など試せることはまだあると思います。
z.z

2022/08/19 07:34

VSCode上で実行するのは気が付きませんでした。 試してみますね。ありがとうございます。 ブラウザからxampp環境での実行は実は少し試しました。 そちらもまとめておきます。
m.ts10806

2022/08/19 13:14

>文字コードはutf8です どこを確認したのでしょうか。画面キャプチャなど提示を。
z.z

2022/08/19 13:49

vscodeの文字コード設定がutf8になっていることと、コマンドプロンプトでphpファイルの中身をtypeコマンドで表示した際、コマンドプロンプトの文字コード設定が932だと日本語部分が文字化けして、65001だと文字化けせずに表示されたので、utf8だと判断しました。 画像のせますね。慣れていないので少し時間かかります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。