ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

海外のプログラマーが作成したphpスクリプトを使おうとおもったのですが、
当然ながら日本語をそのまま入れれば文字化けしてしまいます。

こんな感じです↓
Ž¿–â‚É“š‚¦‚Ü‚µ‚傤

phpの設置はできても、コードをいじるのは完全に素人ですので
一番簡単に日本語の文字入力対応にするにはどうしたら良いのでしょうか??

ちなみにトライしているスクリプトはYahoo Answerのクローンサイトです↓
http://blog.qorporate.com/news/yahoo-answers-clo …


よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

charsetがiso-8859-1になっているのでこれを書き換えるとできないでしょうか?



find /var/www/Yahoo_Answer -type f | \
sed -e 's/^/"/; s/$/"/' | xargs grep -l 'charset=iso-8859-1' | \
sed -e 's/^/"/; s/$/"/' | xargs perl -pi -e 's/charset=iso-8859-1/charset=utf-8/g'

もちろん、DB(mysql)は utf-8 で作成してください。

この回答への補足

お返事ありがとうございます。
ご回答いただいてから試行錯誤していたのですが、
charsetというのはどのファイルから変更できるのかがわからなくて困っております。

ど素人なものでしてご迷惑をおかけします。
もしお時間ありましたらおしえていただけますでしょうか?

よろしくお願いします。

補足日時:2011/04/30 21:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q文字化けって英語で・・・? 

仕事で外国からのメールを受ける事がしばしばありますが、
時々名前などが文字化けしているメールを受け取ります。
本文は英語で書いてくれているのでいわんとすることは分かるのですが、
文字化けでお名前がわからないということなどを相手に伝えたいときは
英語ではどのように表現するればよいでしょうか?
また、文字化けとは英語でどういうのでしょうか?

Aベストアンサー

文字化けそのものを知っている相手(1 バイト文字の国の人)には "The page turned into garbage." と言いました。うちの会社だけだったかもしれませんが (^^;;
aqua さんが書かれているように、相手も 2 バイト文字の国の人でしたら、"Japanese fonts don't support the characters at the bottom of your e-mail. Would you mind writing it in English?" など、「日本語のフォントでは対応していない文字です。」と伝えてはいかがでしょうか。

Q海外で作成されたPHPスクリプトのwebサイトへの出力を日本語で表示さ

海外で作成されたPHPスクリプトのwebサイトへの出力を日本語で表示されるように翻訳したいのですが、
(1)langフォルダの中にあるdefine("_MY_ANS1_","My Answer");だったら
define("_MY_ANS1_","私の回答");
と書き直すだけでよろしいのでしょうか?他に書き直さねばならない場所や、
注意点など有りましたらご教授ください。
(2)$_SESSION['lang'] = "en"; やinclude 'languages/lang_common_'.$_SESSION['lang'].'.php'; というのは
そのままenのままで良いのでしょうか?
(3)PHPのリンクを全部置き換えるのが面倒なので、そのままのlang_index_en等のフォルダ名でも
大丈夫ですよね?
(4)文字コードの保存形式は何にすれば良いでしょうか?

Aベストアンサー

(1)言語ファイルの修正は、その方法で良いです。
 それ以外に文字コードを定義している部分があればご自身が編集された文字コードと合わせればいいです。
(2)普通はjaとかjpを追加して、それを使います。
(3)修正するphpによるので、情報が少ない状態では何とも言えません。
(4)SJISでも、UTFでもお好きなのでいいと思います。

Q文字化けの解読方法について

機種はWin.xpを使っています。
gooメールの文字化けについて教えて下さい。
オークションのやり取りで、受信メールが文字化けしてしまい、読めません。相手にもう一度お願いしたのですが、また文字化けしています。相手は全て読めている様子。
解読方法はありますか?
今までHTML形式、テキスト形式の違いを知らないままHTML形式でメールをやっていました。
今まで文字化けする事は1度もなく初めてです。
流れとして、HTML形式で私から送信しReで相手が返事をくれた(これは読めました)そして私が再Reで送る時テキスト形式に変更して(意味もわからず)送った、その後の返事から文字化けがはじまりました。

Aベストアンサー

3番です。

まずこちらのページを開きます。
http://www.geocities.jp/belden_dr/ToolMBaker.html

そのページの「(3) ダウンロード」の少し下にある「Download MBaker2V2081.lzh」をクリックし、指示に従い、デスクトップなどにダウンロードします。

そのファイルを解凍します。
解凍の方法はこちら。
http://oshiete1.goo.ne.jp/qa656674.html

解凍してできあがったファイルをダブルクリックするとソフトが立ち上がります。

文字化けしたメールを開き、文字化けした部分全体を選択してコピーします。

文字化け解読ソフトの窓の上で右クリックし、貼り付けを選択すると、文字化けしたままの状態で張り付きます。

ツールバーにある「AUTO」「JIS1」などのアイコンを順に押してみると、どれかで見事に文字化けが解消する(はずです)

以上です。

QPHPから、MySQL内に日本語名のテーブルを作成する事ができません。

PHPから、MySQL内に日本語名のテーブルを作成する事ができません。

いつも、お世話になっております。

小生、現在、WindowsXPSP3上で、Apache2.2.15とMySQL5.1.46とPHP5.2.13を使用し、PHPを勉強している、PHP初心者です。

今回質問させて頂きたいのは、PHPからMySQL内にデータベースを作成後、日本語名でテーブルを作成したいのですが、なぜか作成できません。

PHPのソースは以下の様になっています。

-----mysql.php-----
<?php
//MySQLに接続
$sql = mysql_connect('localhost', 'root', 'root');
if(!$sql){
print("MySQLに接続失敗" . "<br>\n");
mysql_close($sql);
die();
}
else{
print("MySQLに接続成功" . "<br>\n");
}

//DB作成
$create_db = 'CREATE DATABASE HUMAN';
if(mysql_query($create_db, $sql)){
print("DB作成成功" . "<br>\n");
}
else{
print("DB作成失敗" . "<br>\n");
mysql_close($sql);
die();
}

//DB選択
if(!(mysql_select_db("HUMAN"))){
print("DB選択失敗" . "<br>\n");
mysql_close($sql);
die();
}

//文字コードをutfに設定
mysql_query("set names utf-8");

//テーブル作成
$create_table = "CREATE TABLE 人間
(名前 VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
年齢 INT NOT NULL,
身長 VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
体重 VARCHAR(50) CHARACTER SET utf8 COLLATE uft8_general_ci NOT NULL,
職種 VARCHAR(50) CHARACTER SET utf8 COLLATE uft8_general_ci NOT NULL,
ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";
if(mysql_query($create_table, $sql)){
printf("テーブル作成成功" . "<br>\n");
}
else{
print("テーブル作成失敗" . "<br>\n");
mysql_close($sql);
die();
}

//テーブルのデータを取得、表示
$select = "SELECT * FROM 人間";
if($result = mysql_query($select, $sql)){
print("データ取得成功" . "<br>\n");
}
else{
print("データ取得失敗" . "<br>\n");
mysql_close($sql);
die();
}

while($getdata = mysql_fetch_assoc($result)){
foreach($getdata as $output){
print($output . "<br>\n");
}
}

//MySQLにCOMMIT文送信
$commit = "COMMIT;";
if(mysql_query($commit, $sql)){
print("コミット成功" . "<br>\n");
}
else{
print("コミット失敗" . "<br>\n");
mysql_close($sql);
die();
}

//MySQLの接続終了
mysql_close($sql);
?>

以上です。
お忙しい中、申し訳ございませんが、先輩方ご教示宜しくお願い致します。

PHPから、MySQL内に日本語名のテーブルを作成する事ができません。

いつも、お世話になっております。

小生、現在、WindowsXPSP3上で、Apache2.2.15とMySQL5.1.46とPHP5.2.13を使用し、PHPを勉強している、PHP初心者です。

今回質問させて頂きたいのは、PHPからMySQL内にデータベースを作成後、日本語名でテーブルを作成したいのですが、なぜか作成できません。

PHPのソースは以下の様になっています。

-----mysql.php-----
<?php
//MySQLに接続
$sql = mysql_connect('localhost', 'root', 'root');
if(!$sq...続きを読む

Aベストアンサー

ズバリ模範解答ではありませんが、私の試してみた限りです。
mysql_query("set names utf-8");を
mysql_query("set names utf8");に修正。

日本語部分をバッククォートで囲む。
ENGINE= の前でかっこが閉じていない。&カンマでつながっている。

$create_table = "CREATE TABLE `名前15` (
`名前` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`年齢` INT NOT NULL,
`身長` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`体重` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`職種` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
) ENGINE = MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;";

これで作成出来ました。
ただ、個人的にはトラブルの元なので日本語は使いたくないです。
(コマンドラインで作ったらテーブルが削除できなくなっちゃいました)

ズバリ模範解答ではありませんが、私の試してみた限りです。
mysql_query("set names utf-8");を
mysql_query("set names utf8");に修正。

日本語部分をバッククォートで囲む。
ENGINE= の前でかっこが閉じていない。&カンマでつながっている。

$create_table = "CREATE TABLE `名前15` (
`名前` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`年齢` INT NOT NULL,
`身長` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`体重` VARCHAR(50) CHARACTER SET utf8 CO...続きを読む

Q.htaccessもmetaもEUC-JPなのにブラウザから自動判別されない。

PHPで
.htaccessもinternal_encoding, http_outputをEUC-JP
としたし、metaタグも書いてEUC-JPとしたのに、
ブラウザから文字のエンコードが正しく自動判別されず、
Unicodeになってしまって、文字化けしてしまいます。
なぜなのでしょうか?
どうしたら正しく判別されるようにできるのでしょうか?
よろしくお願いいたします。

Aベストアンサー

>.htaccessも

の意味がわかりませんが、

header("Content-Type:text/html;charset=euc-jp");
をつけてみては?

Qコメント削除のPHPスクリプトの作成

PHPファイルのコメント部を全て削除するPHPスクリプトを作成しようと思ったのですが、質問させてください。

$string = <<<here
こんにちは。
すみません、乱入します。 //use constant DEBUG_TAIL => 2;
//use constant DEBUG_LEX => 4;
const DEBUG_ADD = 1;
/*
ダメダメ
*/
const DEBUG_TAIL = 2;
//use constant DEBUG_TIME => 8;
const DEBUG_TIME = 8;
here;

$comment1 = '/\/\/.*/';
$comment2 = '/\/\*+.*\*+\//is';
$string = preg_replace($comment1, '', $string);
$string = preg_replace($comment2, '', $string);

のようにすれば(ヒアドキュメント部は)一応ブラウザ上ではコメント部は削除されています。
しかし、ファイルを読み込む(例えばfopen()などで1行ずつ読みこんでいく)方法では$comment2など上手くいかないことは目に見えているのですが、正規表現の指定の仕方が貪欲さの指定も含めてイメージできませんでした。
アドバイスを頂けないでしょうか?

PHP5.3です。

PHPファイルのコメント部を全て削除するPHPスクリプトを作成しようと思ったのですが、質問させてください。

$string = <<<here
こんにちは。
すみません、乱入します。 //use constant DEBUG_TAIL => 2;
//use constant DEBUG_LEX => 4;
const DEBUG_ADD = 1;
/*
ダメダメ
*/
const DEBUG_TAIL = 2;
//use constant DEBUG_TIME => 8;
const DEBUG_TIME = 8;
here;

$comment1 = '/\/\/.*/';
$comment2 = '/\/\*+.*\*+\//is';
$string = preg_replace($comment1, '', $string);
$string = preg_replace($comm...続きを読む

Aベストアンサー

>というのはfile_get_contents()のことと理解して宜しいのですよね?

そうですねfile_get_contents()が手っ取り早いでしょう。

>別に方法があるのでしょうか?

ないこともないですね。
たとえばバッファリング機能をつかってこんな風にするとか

<?PHP
$fname="hoge.txt";
ob_start();
readfile($fname);
$contents=ob_get_contents();
ob_end_clean();
print $contents;
?>

Qテキストエディターの文字化け

素人の者です。
これまで、PHPのプログラムの書き込みをSJISで行ってきましたが、どうもネット上を調べているうちにSJISはあまり使わないほうが良いようなことが書いてあったので、UTF-8で書くことにしようと思いました。そして、UTF-8で書いていてWEB上は特に問題なく文字化けもせず表示されるのですが、テキストエディターで再度ファイルを開くと、テキストエディター内で文字化けしていることがあります。メモ帳で開くときはファイルの文字コートをUTF-8に指定すれば文字化けしません。サクラエディターで開けば、何もしなくても文字化けしません。php_editor_stdで開けば、文字化けします。ez-HTMLで開けば、文字化けします。???とこんな具合です。テキストエディターを開くときにエンコードを指定して開けば、文字化けはしないであろうと考えて、設定の部分を色々と探していじってみても、文字化けの現象は変わりません。SJISですと、ダメ文字とかあるのでやはり切り替えていったほうが良いと思い試している最中です。テキストエディターで文字化けした場合、どのようにすれば解消するのかお分かりになる方がおりました教えていただけないでしょうか。よろしくお願いいたします。

素人の者です。
これまで、PHPのプログラムの書き込みをSJISで行ってきましたが、どうもネット上を調べているうちにSJISはあまり使わないほうが良いようなことが書いてあったので、UTF-8で書くことにしようと思いました。そして、UTF-8で書いていてWEB上は特に問題なく文字化けもせず表示されるのですが、テキストエディターで再度ファイルを開くと、テキストエディター内で文字化けしていることがあります。メモ帳で開くときはファイルの文字コートをUTF-8に指定すれば文字化けし...続きを読む

Aベストアンサー

各テキストエディタは、自動的に文字コードを判別して出力しているため、日本語の文字がファイルの最後のほうにあったりすると、正常に文字コードを取得できず、別の文字コードで開いて文字化け表示するという場合があります。
回避策としては、ファイルの先頭に日本語のコメントを残すというものがあります。
<?php
//ああああああああ

?>
このようにしてやれば、開いたファイルの先頭のほうに日本語の文字が入ってますので、自動判別の精度があがりますので、一度試してください。

また、エディタで保存するとき、サクラエディタなどは、保存形式として、「UTF-8N(または、UTF-8(BOM無し))」などという形式があると思います。
PHPのスクリプトを書く際は、このUTF-8Nとか、「BOM無し」と記載されているほうで保存してください。そうしないと、ファイルの先頭に、BOMというUTF-8識別用の変な(画面上表示されない)バイナリがくっ付いてしまい、後々問題があったりします。

QPHPを利用したキーワード自動リンクスクリプトを作成したいです。

Wikiの様な形で任意のキーワードに対して自動的にリンクを張るスクリプトを構築したいと考えています。

入力された文章をシンプルに検索・置換するだけであれば自分でも出来るのですが、文章内にHTMLタグが含まれている為、うまく動作しません。


例)「おむすび」というキーワードに対して自動リンクを張る場合

入力された文章:
<a href="hoge.php" title="おむすびマン">おむすびマン</a>が作ったおむすび

検索・置換後の文章:
<a href="hoge.php" title="<a href="omusubi">おむすび</a>マン"><a href="omusubi">おむすび</a>マン</a>が作った<a href="omusubi">おむすび</a>


上記の状況になっており、自分でも解決方法を模索したのですがいまいち思い浮かびません。正規表現の使い方次第で出来るような気がするのですが・・。
最終的には任意のHTMLタグに囲まれていないキーワードにのみ自動リンクを作成するという構造にしたいと考えています。

この問題を解決するにはどのようにスクリプトを組むとよいのでしょうか?
使用言語はPHPです、どうぞ宜しくお願い致します。

Wikiの様な形で任意のキーワードに対して自動的にリンクを張るスクリプトを構築したいと考えています。

入力された文章をシンプルに検索・置換するだけであれば自分でも出来るのですが、文章内にHTMLタグが含まれている為、うまく動作しません。


例)「おむすび」というキーワードに対して自動リンクを張る場合

入力された文章:
<a href="hoge.php" title="おむすびマン">おむすびマン</a>が作ったおむすび

検索・置換後の文章:
<a href="hoge.php" title="<a href="omusubi">おむすび</a>マン"...続きを読む

Aベストアンサー

>>この問題を解決するにはどのようにスクリプトを組むとよいのでしょうか?

とりあえず、<a>タグだけに対応した例を示します
<?php
// 元の文字列
$str='<a href="hoge.php" title="おむすびマン">おむすびマン</a>が作ったおむすび';

// 結果表示
echo preg_replace_callback("/(<a.+?<\/a>)|(おむすび)/i", "addlink", $str);

function addlink($match) {
if ($match[0]!="おむすび") return $match[0];
else return '<a href="omusubi">おむすび</a>';
}
?>

QIrfan View 漢字テキスト挿入時文字化け修正の仕方を教えてください。

Irfan Viewで漢字を挿入しようとしたら、文字化けします。(アルファベットは大丈夫です。)
文字化けを修正する方法は、プラグインが必要でしょうか?
もし、修正不可なら、他のソフトの紹介お願いします。

上記のことを解決できる方、解説お願いします。

Aベストアンサー

日本語のあるフォントを選択すればいいです。
多分それだけです。

尚、
> 文字化けを修正する方法
が「既に入力されたものを修正したい」という意味でしたら、
もうドット画像になってる状態で文字情報が失われてるので
無理です。

Q拡張子PHP3のスクリプトをPHP4で実行する方法

拡張子PHP3のスクリプトをPHP4の環境で使用するにはどうしたらよろしいでようか。

Aベストアンサー

拡張子を phpに変更すれば OKです。
include()で読込むものは変更不要です。

一部サポートしていない関数などはソースを修正する必要があります。
例えば、国際化(日本語化?)パッチを適用した SetKanjiOutput()関数など。


人気Q&Aランキング