投稿者 |
メッセージ |
|
< PHPプログラミング ~ かわいそうな外国人を手伝ってください :) |
|
時間:
金 4月 21, 2006 9:13 am
|
|
|
|
はじめまして、
今大変な問題があって、日本人からの手伝いがとても必要です。
何年間SHIFT−JISのエンコードで日本語のHPを作りましたが、昨日、気がついたこと無い問題を発見しました: SHIFT-JISではPHPのstripslashes() と str_replace() を使うと時々文字化けになります。つまり、「0x5c」をしている文字はバックスラシュと間違えています。
stripslashes()をよく使っていますので、違うエンコードにして見ました。でもそうすると、IEで見たら全てのページは空になってしまいます。原因は何でしょうか?どうしたら良いですか?一番簡単な方法は何ですか?
しかも、今作っているサイトは結構大きいので、沢山なincludesと普通のファイルがあります。もし、全てのファイルを別のエンコードにコンバートしたかったら、どうしたらいいですか?
お願いします! |
|
|
|
|
|
|
|
時間:
金 4月 21, 2006 9:43 am
|
|
|
登録日: 2006年3月 23日
投稿記事: 48
|
|
|
|
|
|
|
時間:
金 4月 21, 2006 9:57 am
|
|
|
|
「content="text/html; charset=EUC-JP"」にしましたが、IEでは空のページになったし、Firefoxでは文字化けばっかりになりました。全てのファイルをUTF-8にコンバートする必要ありませんか? |
|
|
|
|
|
|
|
時間:
金 4月 21, 2006 11:21 am
|
|
|
登録日: 2006年4月 05日
投稿記事: 14
|
|
ファイルの文字コードと<meta>で指定する文字コードが異なれば、文字化けします。
<meta content-type="text/html; charset=EUC-JP">
とするなら、ファイルの文字コードもEUC-JPにコンバートしましょう。
ファイルの文字コードを変換するフリーソフトも多数あります。
私は「KanjiTranslator」を使ってます。
↓VECTORより
http://www.vector.co.jp/soft/win95/util/se326595.html
大量のファイルを一気に変換できるので気に入ってますが、たまに変換されないファイルがあるのが、やや難点です。
ためしに使ってみてください。 |
|
|
|
|
|
|
|
時間:
金 4月 21, 2006 11:44 am
|
|
|
|
ありがとう、ちびさん!
ソフトを使ってみます。
でもその前にはも1個の質問があります:
私のサイトのPHPソースと日本語の内容はちゃんと別れていますので、全てのファイルそれとも日本語のファイルだけをコンバートしなければならないかどうか知りたいのです。
そして、SHIFT-JISで保存されたMYSQLデータをどうしますか?
サンク・ユー / メルシ :) |
|
|
|
|
|
|
|
時間:
金 4月 21, 2006 12:23 pm
|
|
|
登録日: 2006年4月 05日
投稿記事: 14
|
|
PHPファイルは全てコンバートしましょう。
MySQLについては、EUC-JPで再構成するか、マルチバイト対応を前提としてPHP側でmb_convert_encoding()を適用して出力するか、どちらかでしょう。
どちらも、地道な力仕事ですが。 |
|
|
|
|
|
|
|
時間:
金 4月 21, 2006 7:36 pm
|
|
|
|
ありがとうちびさん!
今日よく考えたんですけど、別のエンコードにするのはとても面倒くさいと思いました。
そして、今のプロジェクトではPHPのmb_____()をインストールできません。
しかも、昨日日本の有名な会社のサイト(NTT、SONYなど)を好奇心で見た時に、皆は私のようにSHIFT-JISを使っていると明らかになりました。
だから、今考えているのは:違うエンコードにする変わりに、stripslashes()の問題だけを直したほうがいいんじゃないですか?・・・と思いました。確かに、どこかにはaddslashes()の使い方が悪いと思います。今までデータベースの為にget_magic_quotes_gpcはONでした。OFFにすることを考えています。
でもOFFにしたら、MYSQLデータを保存する時に「”」などの文字を守らないと行けないでしょう。今ちょっと混乱になってしまいました:( |
|
|
|
|
|
|
|
時間:
水 8月 02, 2006 12:10 am
|
|
|
登録日: 2006年8月 01日
投稿記事: 4
所在地: Shimonoseki
|
|
magic_quotes を OFF にして、MySQLにデータを入れるときに
mysql_real_escape_string() を使えば? |
_________________ Kanmonline.com |
|
|
|
|
|
|
時間:
木 8月 10, 2006 4:12 pm
|
|
|
|
こんにちわ!
ブラウザーが間違った文字コードで認識しているとかはないですか?
header();を使って確実にブラウザーにSHIFT_JISですよと伝えてみたら?
header('Content-type: text/html;charset=SHIFT_JIS');
一回試してみてください。 |
|
|
|
|
|
|
|
時間:
木 8月 10, 2006 4:24 pm
|
|
|
|
別にmagic_quotesをOFFにしなくても、PHPの処理で判断したらいいと思います。
データベースに書き込む時だけmysql_escape_string()等を使ったらいいと思います。
if ($_SERVER["REQUST_METHOD"] == "POST") {
// get_magic_quotes_gpcの確認
$quotes = get_magic_quotes_gpc();
if ($quotes) {
$userName = stripslashes($_POST["userName"]);
} else {
$userName = $_POST["userName"];
}
//処理省略
//データベースの書き込み
$userName = mysql_escape_string($userName);
$sql = "INSERT INTO table (username) VALUES('".$userName."')";
mysql_query($sql);
} |
|
|
|
|
|
|
|