[PHP-users 15262]Re: 文字コード変更?

Osamu Shigematsu m5issige @ mr.hitachi-medical.co.jp
2003年 5月 14日 (水) 11:34:14 JST


重松です。こんにちは。

> ちなみに sjis で書いているのですが
> euc にしなくてはダメなのでしょうか?

逆説的にいえば、EUC だと問題ないとわかっているのに、
何故 SJIS で書くのですか、という質問もありませんか?

SJIS で書くには、「条件」があるのですが、それはクリアしていますか?

> フォームからの値を下記のようにしても
> どうしても思い通りに動作してくれません。

思い通りとは、どういう思いで、動作しないとは、どういう状態ですか?

例えば、今回だと、$k に入れた内容、そして、出力された文字列くらいは
添えて、どういう結果を期待して、どういう結果になって、
その原因は自分では何にあると思うのか、くらいは書いたほうが良いと
おもいますし、他にも、マルチバイト周りの設定、インストール時の
オプション、その他、必要な情報がかなり抜け落ちている気もします。

以下、質問の書き方、例。(勝手にいろいろ推測してます。)

○○の GT と申します。こんにちは。

%XX%XX という % の後に 16 進数が続く表記に変換する操作が
URL エンコードという処理であることを知ることができ、
PHP では、urlencode() を使用することがわかりました。

そこで、動作を確認のために、以下のようなスクリプトを書きました。
%XX%XX%XX という結果を期待するのですが、私の環境では、
%ZZ%ZZ%ZZ となります。
# Perl では、%XX%XX%XX となりましたので、これが正常と判断しました。

<?php
	$k = "表示のテスト";
	$k = mb_convert_encoding($k, "EUC-JP");
	$k = urlencode($k);
	print $k;
?>

なお、スクリプトの文字コードは、Shift_JIS です。
デザインはデザイナーが行っており、作業の連携の関係で、
スクリプトは、SJIS で記述しなければなりません。

Google で XXX というキーワードで調べ、以下のようなページを見つけて、
原因は、漢字コードの認識にあるのではないかと思い、
設定を確認したのですが、特に問題があるとは思えません。

	$k = mb_convert_encoding($k, "EUC-JP", "SJIS");

とコードを明示しても、やはりうまくいきません。
よって、コードの自動認識の問題ではないようです。

私の環境:
	PHP 4.3.1, DSO としてインストール
	インストール時のコンパイルオプション
	./confiure --hogehoge --ugeuge
	OS は VineLinux 2.6 FTP, intel 版 (apt で最新版に自動更新)
	uname -a の結果とかも書くとよいかも
	Apache は 1.3.X でソースからコンパイルしました。
私の設定内容:
	mb_関連を phpinfo() の結果から抜粋して書く

過去のメッセージも「○ ×」などのキーワードで検索したのですが、
同様と思えるものがありませんでした。

この問題について、情報をお持ちの方がいらっしゃいましたら、
アドバイスをいただければ幸いです。

-- 
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp>



PHP-users メーリングリストの案内