海外のプログラマーが作成した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海外からの中国語や英語のメールやSMSを文字化けなしに受信するには

海外からの中国語や英語のメールやSMSを文字化けなしに受信するには

海外から発信される中国語や英語のメールやSMSを受け取る場合、文字化けせずに受け取るにはどうすればよいでしょうか。

文字化けは携帯電話の機種によって、異なりますか?また、海外からのメールやSMS発信の場合、どんなフォントやシステムを使えば、日本の携帯に文字化けなしに送れますか。

また、海外のPCや携帯から日本語で送信されたメールが、携帯に届くと、日本語の文章なのに、文字化けしていることがあります。この問題を解決するには、相手にどんなフォントやシステムを使って文章を書いてもらえばいいでしょうか。

おわかりになる点がひとつでもありましたら、教えて下さい。お願いします。

Aベストアンサー

中国語で作成された物はともかくとして
相当変った環境でない限り
英語で作成された物が文字化けするとは思えません
(ですので以下の話は中国語限定)

文字化けする際は使っている機種によって違うでしょう
中国語が表示されない機種(フォントがない機種)に
中国語で送っているわけですから

>海外のPCや携帯から日本語で送信されたメールが
>携帯に届くと、日本語の文章なのに、文字化けしていることがあります。
>この問題を解決するには、相手にどんなフォントやシステムを使って文章を書いてもらえばいいでしょうか。
これは途中のサーバ経路で日本語対応などしていないと化ける可能性があります
その場合どうしようもありません

日本語で書いていてもメールのエンコード設定や使用している
フォントによっては化けることがあります

文字化けの理由については幅が広いのでメールヘッダ見たり中継サーバ
確認したりしないと一概に  これが原因  ということはいえません

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英語サイトの文字化けで困ってます

Macで英語のサイトを見ると文字化けすることがあって困っています。
何か重要なフォントを消してしまったのでしょうか?

例えば英語のウィキペディアのサイトが文字化けします。
http://en.wikipedia.org/wiki/Main_Page
しかし英語のヤフーは文字化けしてません。
http://m.www.yahoo.com/

Fierfox、Safariどちらで見ても同じことがおこります。
Mac 10.4.11です。

よろしくお願いいたします。

Aベストアンサー

#2です。
解決してよかったですね。

>FontBookでHelvetica.dfontが最優先に使われるように設定するにはどうしたらよいのでしょうか?
この方法は、Font BookでHelveticaの項目に表示される「Helvetica.dfont」以外のフォントを無効にします。
Font Bookを起動し、「フォント」列の中からHelveticaを選択し、右向きの三角形をクリックして内容を表示します。
フォント名の右側に何も印が付いていないものが現在使われているフォントです。そのフォントを選択し、右クリックして、使用停止を選択すれば、そのフォントが無効になります。フォントメニューから「フォント情報を表示」を選択すると、そのフォントのファイル名などが表示されますので、どこにインストールされているフォントなのかを確認して作業してください。

しかし、、
そうすると、Illustratorなどでは、他のフォントを使用できなくなり、いちいちフォントの有効、無効を切り替える必要が生じます。さきほどは、何が原因かを探るために、この方法を紹介しましたが、現実的ではありません。ですので、別の方法を考えたほうがいいかと思います。

Illustratorなど、アドビシステムズ社のソフトウェアだけで使用するフォントでしたら、お勧めとしては、
HD>ライブラリ>Application Support>Adobe>Fontsフォルダの中に使用したい他のヘルベチカ系フォントを入れてください。
そうすれば、Illustratorなど、アドビシステムズ社のソフトウェアでだけ、他のヘルベチカ系フォントが使用できるようになります。

もう1つの方法は、置き換わっているフォントを特定し、そのフォントを使用しないようにする方法です。
元の状態(文字化けしている状態)に、フォントを戻します。
文字化けしているページに移動し、文字化けしている部分の文字を数文字コピーします。
テキストエディットなどにコピーし、そのフォントが何であるかを特定します。
特定したら、そのフォントだけ、フォントブックで無効にします。
再度、文字化けしているページを表示し、まだ文字化けしているようなら、また同じ作業を繰り返します。

#2です。
解決してよかったですね。

>FontBookでHelvetica.dfontが最優先に使われるように設定するにはどうしたらよいのでしょうか?
この方法は、Font BookでHelveticaの項目に表示される「Helvetica.dfont」以外のフォントを無効にします。
Font Bookを起動し、「フォント」列の中からHelveticaを選択し、右向きの三角形をクリックして内容を表示します。
フォント名の右側に何も印が付いていないものが現在使われているフォントです。そのフォントを選択し、右クリックして、使用停止を選択すれば、そ...続きを読む

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自作の英語版ホームページが文字化け

自作の英語版ホームページが文字化けしていないかどうか
確認するために、ブラウザで「表示」→「エンコード」を
変更して見たところ、「自動選択」では全く問題がなかったのですが、「西ヨーロッパ言語」(Windows)では、若干文字化けしていました。
英語版の場合、英語圏で文字化けすることなく見ることができれば良いと思うのですが、ブラウザで確認する場合は
エンコードを何に変更して見るのが最も適当でしょうか。

Aベストアンサー

英語圏では一般的にISO8859-1が標準的に使用されているようです。METAタグには以下のように記述します。
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

METAタグで記述しておけばブラウザでエンコードを切り替えなくても自動的に判別してくれます。
文字化けしやすい例としては全角のスペースですね。
多国語に対応したエンコードとしてはUTFがあります。

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>';
}
?>

Q「文字化け」を英語で…。

ある海外の方と知り合い、文通をする事になりました。
相手の方が住所を教えて下さったのですが、
そこだけ文字化けしていたので読めませんでした。

「文字化けしているのでもう一度メールを送ってくれませんか?」
と言いたいのですが、『文字化け』は英語で何と言うのでしょうか?

Aベストアンサー

文字化けはfunny characters // garbled characters です。

下記の文章で伝わるかと思います。
I got a garbled e-mail from you. Could you e-mail me again?

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

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

Aベストアンサー

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

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


人気Q&Aランキング