カテゴリ | |
サマリ | ファイルを上書き保存すると文字コードが変わってしまう |
バージョン | 1.4.6 |
投稿者 | 芋焼酎ファン |
状態 | 完了 |
投稿日 | |
初めまして。よろしくお願いします。
Googleサイトマップ用のフォーマッでXMLサイトマップを作成するプラグインを作っているのですが、サイトマップファイルを上書き作成するとSJISで保存されてしまいます。
サーバーのドキュメントルートにサイトマップファイルを、UTF-8, LF, パーミッション666で置いておいて実行するとSJIS, LFに変わってしまい、原因が分からずつまずいています。
PHP初心者が見よう見真似でつくったものなので、ソースを表示するのはちょっと恥ずかしいのですが、作りかけのプラグインはこちら、プラグインから呼び出しているファイルはこちらです。
UTF-8で保存させるにはどうしたらいいでしょうか。
- スミマセン、投稿時に改行の入れ方を間違えました -- 芋焼酎ファン
- 実際に試したわけではないのですが、次のような問題がありそうです。まずはこれらを見直してみると良いでしょう :) -- teanan
- make_google_sitemap_form()に cmd の値が必要です。
+ global $script;
:
<form action="$script" method="post">
+ <input type="hidden" name="cmd" value="makegglstmap">
- <input type="hidden" name="mode" value="mk_xml">
- つぎに、上記postを受けるために、~_actionという関数を用意します。
plugin_makegglstmap_action()
{
// 受けたときの処理をここにかく
}
- アドバイスありがとうございます。cmdと_actionというのを使うんですね。またひとつ勉強になりました。こんな感じに変更したのですが、やはりSJISに変わってしまいます。~実は、これとほとんど同じ手順でindex.rdfファイルを作る自作プラグイン(もどき)を実行すると、そちらはちゃんとUTF-8で上書きされるのです。違いというか原因がいまひとつ分かりません。 -- 芋焼酎ファン
- php.iniの設定は? --
- 現在、この設定で動いてます。今からmbstringのSJISとあるところを変更して試してみます。 -- 芋焼酎ファン
- 現在、この設定で動いてます。今からmbstringのSJISとあるところを変更して試してみます。 -- 芋焼酎ファン
- 自分の環境だけかもしれませんが、どうも保存データに日本語が入っていないとSJISになってしまうようです。試しに</urlset>を閉じた後ろに、$save_body .= '<title>'.htmlspecialchars(charconvert_utf($page_title)).'</title>' . "\n";としたところ(サイト名が日本語なので)、UTF-8で保存されました。クロールの時に、運良くサイトマップエラーにならなければそのままいこうと思いますが、ダメなら出来上がったSJISのものをいったんDLしてUTF-8に変換保存してUPします。ありがとうございました。 -- 芋焼酎ファン
- もしかして、半角英数のみのファイルを作成されていますか? もしそうであれば、SJISもUTF-8も関係ないです (^^; -- teanan
- teananさんありがとうございます。今回の場合、文字コードは関係なかったのですね。不勉強でお恥ずかしい限りです。一応、結果報告しますと、</urlset>を閉じた後ろに余分な日本語を加えたものではサイトマップエラーになりました。(当然と言えば当然ですが) で、元々の投稿時に表示したもので作ったサイトマップは、クロール後24時間ほど経過した今のところ、エラーになっておりません。お騒がせしました。 -- 芋焼酎ファン