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

GET関数?の文字化けについてです。

created: 2003-12-08 01:05 | modified: 2004-01-02 02:13 | reply: 16

[1147] エンコードがおかしいのでは?

user: hamaji | created: 2003-12-12 19:24
>mysql_query("INSERT INTO ranking VALUES('日本語', $score)");
>だと、ちゃんと表示されるんですけど・・。
だとしたらエンコードがおかしいのではないでしょうか?

>あと、スクリプトもサクラエディタというので調べましたが、SJISでした。
いや、スクリプト自体じゃなくてMySQLに保存する際の文字コード(スクリプトに渡される文字列)という意味で言ったつもりで、
言い方が悪かったかも知れませんね。すいません。

>$nickname = $HTTP_GET_VARS["nickname"];
>$score = $HTTP_GET_VARS["score"];
>mysql_query("INSERT INTO ranking VALUES('$nickname', $score)");
これってエンコードかけてますか?

GETで英数文字以外を渡すときはurlencode()、urldecode()を使いましょう。
http://www.php.net/manual/ja/function.urlencode.php
http://www.php.net/manual/ja/function.urldecode.php
バージョンアップしたのであれば$_HTTP_GET_VARSは使いません。
例1)HTMLのフォーム
<a href="xxxx.php?nickname=<?php echo urlencode("ここは日本語") ?>&score=9999">サンプル</a>

例2)PHP(受け取り側)
$nickname = urldecode($_GET["nickname"]);
$score = $_GET["score"];
mysql_query("INSERT INTO ranking VALUES('$nickname', $score)");

あとはphp.iniの[mbstring]にどのような設定をされたのでしょうか?
mbstring.internal_encodingや、
mbstring.http-input、mbstring.http_output等々

#追記
#FLASHから値を渡そうとしているのでしょうか?
#FLASH(ActionScript)ならescape()関数を使うようですが。
#escape( String )
#説明
#
#関数; パラメータをストリングに変換し、URL エンコードします。
#この場合、英数字以外のすべての文字は % が付いた
# 16 進シーケンスでエスケープされます。
Parent: 1146  reply: 1173 返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 923 件中 708 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

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