カテゴリ | |
---|---|
サマリ | EUC JP版を、Shift JIS版に改造したい |
バージョン | 1.4.2 |
投稿者 | extraordinary |
状態 | 却下 |
投稿日 | 2004-02-24 (TUE) 01:36:45 |
サーバ環境の都合で、EUC JP版を、Shift JIS版に改造して利用しようとしていますが、文字化けするなど、うまく動作してくれません。改造の手順は以下の通りです。
func.php init.php make_link.php wiki/3A636F6E6669672F706C7567696E2F6174746163682F6D696D652D74797065.txt wiki/496E74657257696B694E616D65.txt wiki/496E74657257696B69A5C6A5AFA5CBA5ABA5EB.txt wiki.en/3A636F6E6669672F706C7567696E2F6174746163682F6D696D652D74797065.txt wiki.en/496E74657257696B694E616D65.txt
define('SOURCE_ENCODING','EUC-JP');→define('SOURCE_ENCODING','SJIS');
charset=euc_jp→charset=x-sjis(2カ所)
else if (SOURCE_ENCODING == 'EUC-JP') { $is_pagename = ($is_pagename and preg_match('/^(?:[\x00-\x7F]|(?:[\x8E\xA1-\xFE][\xA1-\xFE])|(?:\x8F[\xA1-\xFE][\xA1-\xFE]))+$/',$str)); // EUC-JP }→
else if (SOURCE_ENCODING == 'SJIS') { $is_pagename = ($is_pagename and preg_match('/^(?:[\x00-\x7F\xA1-\xDF]|(?:[\x81-\x9F\xE0-\xFC])|(?:[\x40-\x7E\x80-\xFC]))+$/',$str)); // SJIS }
手順で間違っている箇所、抜けている箇所ありましたら、是非アドバイスお願いします。
charset=x-sjisではなくcharset=Shift_JISです。
ありがとうございます。この箇所だけでは解決しないと思われますので、引き続き、アドバイスお待ちしています。Shift_JIS化する人ってあんまりいないかな?
PHPで問題無く処理するためには、internal_encoding(PHPが内部処理で用いるエンコード、及びPHPソースのエンコード)がEUC-JPかUTF-8でないといけません。SOURCE_ENCODINGをSJISにすると、internal_encodingもSJISになるので、日本語処理はボロボロになるはずです(http://jp2.php.net/manual/ja/ref.mbstring.php 参照)。どうしても、internal_encodingをSJISにしたいという場合は、エンコーディングに関する深い知識と相当な改造が必要です。internal_encodingはEUC-JPかUTF-8にし、http_outputのみSJISにすることを強く強くお勧めしますけど・・・、それじゃぁダメなんでしょうか? ちなみに、サーバー環境の都合って?