投稿者 メッセージ
<  PHPプログラミング  ~  かわいそうな外国人を手伝ってください :)
sleidia
投稿1時間: 金 4月 21, 2006 9:13 am  引用



登録日: 2006年4月 21日
投稿記事: 4

はじめまして、

今大変な問題があって、日本人からの手伝いがとても必要です。

何年間SHIFT−JISのエンコードで日本語のHPを作りましたが、昨日、気がついたこと無い問題を発見しました: SHIFT-JISではPHPのstripslashes() と str_replace() を使うと時々文字化けになります。つまり、「0x5c」をしている文字はバックスラシュと間違えています。

stripslashes()をよく使っていますので、違うエンコードにして見ました。でもそうすると、IEで見たら全てのページは空になってしまいます。原因は何でしょうか?どうしたら良いですか?一番簡単な方法は何ですか?

しかも、今作っているサイトは結構大きいので、沢山なincludesと普通のファイルがあります。もし、全てのファイルを別のエンコードにコンバートしたかったら、どうしたらいいですか?

お願いします!
トップに移動
ユーザー情報を表示 メッセージを送信
しもやん
投稿1時間: 金 4月 21, 2006 9:43 am  引用



登録日: 2006年3月 23日
投稿記事: 48

eucにしましょう
トップに移動
ユーザー情報を表示 メッセージを送信
sleidia
投稿1時間: 金 4月 21, 2006 9:57 am  引用



登録日: 2006年4月 21日
投稿記事: 4

「content="text/html; charset=EUC-JP"」にしましたが、IEでは空のページになったし、Firefoxでは文字化けばっかりになりました。全てのファイルをUTF-8にコンバートする必要ありませんか?
トップに移動
ユーザー情報を表示 メッセージを送信
ちぴ
投稿1時間: 金 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

大量のファイルを一気に変換できるので気に入ってますが、たまに変換されないファイルがあるのが、やや難点です。

ためしに使ってみてください。
トップに移動
ユーザー情報を表示 メッセージを送信
sleidia
投稿1時間: 金 4月 21, 2006 11:44 am  引用



登録日: 2006年4月 21日
投稿記事: 4

ありがとう、ちびさん!

ソフトを使ってみます。
でもその前にはも1個の質問があります:

私のサイトのPHPソースと日本語の内容はちゃんと別れていますので、全てのファイルそれとも日本語のファイルだけをコンバートしなければならないかどうか知りたいのです。

そして、SHIFT-JISで保存されたMYSQLデータをどうしますか?

サンク・ユー / メルシ :)
トップに移動
ユーザー情報を表示 メッセージを送信
ちぴ
投稿1時間: 金 4月 21, 2006 12:23 pm  引用



登録日: 2006年4月 05日
投稿記事: 14

PHPファイルは全てコンバートしましょう。

MySQLについては、EUC-JPで再構成するか、マルチバイト対応を前提としてPHP側でmb_convert_encoding()を適用して出力するか、どちらかでしょう。

どちらも、地道な力仕事ですが。
トップに移動
ユーザー情報を表示 メッセージを送信
sleidia
投稿1時間: 金 4月 21, 2006 7:36 pm  引用



登録日: 2006年4月 21日
投稿記事: 4

ありがとうちびさん!

今日よく考えたんですけど、別のエンコードにするのはとても面倒くさいと思いました。
そして、今のプロジェクトではPHPのmb_____()をインストールできません。

しかも、昨日日本の有名な会社のサイト(NTT、SONYなど)を好奇心で見た時に、皆は私のようにSHIFT-JISを使っていると明らかになりました。

だから、今考えているのは:違うエンコードにする変わりに、stripslashes()の問題だけを直したほうがいいんじゃないですか?・・・と思いました。確かに、どこかにはaddslashes()の使い方が悪いと思います。今までデータベースの為にget_magic_quotes_gpcはONでした。OFFにすることを考えています。
でもOFFにしたら、MYSQLデータを保存する時に「”」などの文字を守らないと行けないでしょう。今ちょっと混乱になってしまいました:(
トップに移動
ユーザー情報を表示 メッセージを送信
BurakUeda
投稿1時間: 水 8月 02, 2006 12:10 am  引用



登録日: 2006年8月 01日
投稿記事: 4
所在地: Shimonoseki

magic_quotes を OFF にして、MySQLにデータを入れるときに
mysql_real_escape_string() を使えば?

_________________
Kanmonline.com
トップに移動
ユーザー情報を表示 メッセージを送信 ウェブサイトに移動
johna
投稿1時間: 木 8月 10, 2006 4:12 pm  引用



登録日: 2005年6月 15日
投稿記事: 9

こんにちわ!

ブラウザーが間違った文字コードで認識しているとかはないですか?

header();を使って確実にブラウザーにSHIFT_JISですよと伝えてみたら?

header('Content-type: text/html;charset=SHIFT_JIS');

一回試してみてください。
トップに移動
ユーザー情報を表示 メッセージを送信
johna
投稿1時間: 木 8月 10, 2006 4:24 pm  引用



登録日: 2005年6月 15日
投稿記事: 9

別に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);

}
トップに移動
ユーザー情報を表示 メッセージを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  PHPプログラミング

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.