スレッド表示 | フラット表示〕 全トピック 920 件中 564 番目 次≫ ≪前

コマンドラインでの文字化け

created: 2004-08-28 09:27 | modified: 2004-09-02 18:50 | reply: 5

[1762] コマンドラインでの文字化け

user: しょうこ | created: 2004-08-28 09:27
はじめましてしょうこと申します。

コマンドラインから以下のコマンドを実行するとSJISで出力されてきます。
EUCにしたいのですが、変換関数か、設定変更関数などで可能でしょうか?
その他いい方法などがありましたらご教授願います。

【test.php(EUC)】
-----
<?
$aaa = "あいうえお";
print($aaa);
?>
-----

【コマンド】
php -q test.php
-----
△Θ
-----

print前に文字コード変換関数、設定変更関数を挟んで
やってみましたが、どれもだめでした。
ブラウザに表示するわけではないので関係なさそうですが・・・

mb_convert_encoding($aaa, "EUC-JP", "SJIS");
i18n_http_output("EUC-JP");
mb_http_output("EUC-JP");


【環境】
RedHatLinux
PHP 4.2 と 4.3.4

【php.ini】
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;
reply: 1764 返信 編集 削除

[1764] re: コマンドラインでの文字化け

user: Pluto | created: 2004-08-30 09:58
[sample.php]
<?php
$str = "あいうえお";
$str = mb_conert_encoding($str, "euc-jp");
var_dump(mb_detect_encoding($str, "auto"));
echo $str;
?>

php -q sample.php
-
string(6)"EUC-JP"
あいうえお
-

"mb_convert_encoding"の変換前の文字コードを省いてみてはどうでしょう?

当方の環境では、特に文字コードを指定することなく、普通に"EUC-JP"として標準出力されるみたいですが…
Parent: 1762  reply: 1766 返信 編集 削除

[1766] re: コマンドラインでの文字化け

user: しょうこ | created: 2004-09-01 11:59
返答ありがとうございます。

提示いただいた[sample.php]で試してみましたが結果は同じでした。

もうちょっと調べてみます。
Parent: 1764  reply: 1767 返信 編集 削除

[1767] オプションで対応

user: シロウ | created: 2004-09-01 13:59
@PHP.ringに参加させて頂いている。
シロウと申します。
ゆうじさんLink張って頂いていたのですね、有難うございます。

-----本題です------
実行の際に -n オプションを付けてみては如何ですか?
php.iniの設定を読まずに実行してくれます。

[test.php]
#!/usr/local/bin/php -q -n
<?php
echo "日本語\n";
?>

http://www.php.net/manual/ja/features.commandline.php
-n オプションの解説がない?
#!/usr/local/bin/php -q -d output_handler=""
<?php
echo "日本語\n";
?>
-d オプションで output_handler を無効にしてみるのも試してみては?

php.ini の「output_handler」で指定した出力制御は実行スクリプト側で処理できないと思います。
http://www.php.net/manual/ja/ref.outcontrol.php

[コマンドラインからの実行]
http://www.spencernetwork.org/memo/tips-6.php

参考になれば幸いです。
Parent: 1766  reply: 1770 返信 編集 削除

[1770] コマンドラインでの文字化け【解決】

user: しょうこ | created: 2004-09-02 11:45
Plutoさんの[sample.php]を使い以下のコマンドを試したところ、EUCにて表示されましたっ!
php -q -d output_handler="" sample.php


> php.ini の「output_handler」で指定した出力制御は実行スクリプト側で処理できないと思います。

そうなんですね・・・
出来るものと思い込んでおりました。

Plutoさん、シロウさんありがとうございました。
Parent: 1767  reply: 1771 返信 編集 削除

[1771] 追記:マルチバイトの設定はOK

user: シロウ | created: 2004-09-02 18:50
[test.php] 文字コード:EUC-JP
#!/usr/local/bin/php -q
<?php
// HTTP charsetヘッダを設定
ini_set('default_charset','EUC-JP');
// HTTP 入力変換を有効にする
ini_set('mbstring.encoding_translation','On');
// HTTP出力をEUC-JPに設定
ini_set('mbstring.http_output','EUC-JP');
// 内部エンコーディングをEUC-JPに設定
ini_set('mbstring.internal_encoding','EUC-JP');

echo "日本語\n";
?>

http://www.php.net/manual/ja/ref.mbstring.php

書き方が不親切でしたね。
マルチバイトの設定部分は ini_set() 関数により、実行スクリプト内で制御できます。
(mbstring はほぼ PHP_INI_ALL になっています)

http://www.php.net/manual/ja/function.ini-set.php

しょうこさんの環境では以下の一行だけを追加すれば大丈夫でしょうか?
ini_set('mbstring.http_output','EUC-JP');
Parent: 1770  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 564 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑