FC2ブログサーバー移設の確認事項 テンプレート文字コード「utf-8」
- 2012-04-14 土 14:30
- FC2ブログ
FC2ブログサーバ移設はURLにサーバ番号を含むブログが対象です。「http://blogID.blog.fc2.com/」は対象外です。また多言語サーバ(英語版など)や既に文字コードが「utf-8」に変更されているブログには大きな影響はありません。
対象URL = http://blogID.blog番号.fc2.com/
【移設完了】 1-138
確認事項(2012-04-17追記)
» 修正する箇所がないかをチェックするブックマークレット (12/05/22)
- サーバは移設されるが、ブログURLは変わらない
- 管理画面のURLが変更
旧:http://blog番号.fc2.com/control.php
新:http://control.blog.fc2.com/control.php
※ログインページはリダイレクトされる(自動でジャンプする)ため、ユーザー側で変更をする必要はない(テンプレートによっては例外あり)。 - 文字コードが「euc-jp」から「utf-8」に変更
適用中またはダウンロード済みのテンプレートの文字コードは、meta要素のcharset属性のみ「<%template_charset>」に自動変換される。この点についてはユーザーが変更する必要はない。
<meta http-equiv="content-type" content="text/html; charset=EUC-JP" />
↓サーバー移設自動変換
<meta http-equiv="content-type" content="text/html; charset=<%template_charset>">ただし、終了タグごと変換してしまうので、XHTMLの場合は「charset=<%template_charset>" />」にする。
それ以外の部分(XML宣言やCSS)については自動変換されないため、各自で対応する。
移設が完了した後で、スタイルシートの先頭にある「@charset EUC-JP;」を「@charset "utf-8";」に修正。 コメント絵文字装飾ツールが文字化けしていないか確認
サーバー移設で「charset="euc-jp"」が強制挿入されて文字化けしていたら削除。<script type="text/javascript" src="<%template_comment_js>" charset="euc-jp">
↓削除
<script type="text/javascript" src="<%template_comment_js>">- テンプレートとプラグインのHTMLにあるcharset属性のないscript要素に「 charset="euc-jp"」が強制挿入
ページが真っ白になったり、記事が表示されなくなった場合は独自変数に「charset="euc-jp"」が割り込んでいる可能性があります。
(例)<!--permanent_area-- charset="euc-jp">
→削除修正→<!--permanent_area-->
移設後にテンプレートHTML内を『</script charset="euc-jp">』で検索して見つかれば『</script>』に修正。『-- charset="euc-jp">』で検索して見つかれば『-->』に修正。 - Googleカスタム検索などの外部サービスの文字コードを「utf-8」に変更
移設後に「euc-jp」から「utf-8」に変更
テンプレートで修正しておくべきこと
「キーワード」は「Ctrl」+「F」キーで検索。
※「EUC-JP」は小文字「euc-jp」の場合も対象です。
- スタイルシート
-
スタイルシート欄の先頭行に「
@charset "EUC-JP";
」がある場合が対象です。ない場合はそのままでも構いません。移設後は文字コードが「utf-8」になるため、ブラウザによってはデザインが崩れる原因になります。移設日前に「
@charset "EUC-JP";
」の1行を削除します。@charset "EUC-JP"; ←削除
移設が終わったら同じ場所に「@charset "utf-8";」を追加します。
既に移設が終わっている場合は「EUC-JP」を「utf-8」に変更するだけです。@charset "utf-8";
ブラウザによっては大きな崩れはないため、気づかないケースもあるかもしれません。
※もしかすると今後、スタイルシートも自動変換の対象になるかもしれません。移設後に、新しく公式・共有テンプレートをダウンロードした場合は自動的に「euc-jp」から「utf-8」に変換されるので問題ありません。
- XML宣言
-
HTMLの最初に次のようなコードがある場合は修正します。ない場合は必要ありません。
<?xml version="1.0" encoding="EUC-JP"?>
「<%template_charset>」に変更。
<?xml version="1.0" encoding="<%template_charset>"?>
あるいは、この1行自体を削除します(文字コードが「utf-8」になるときは省略できます)。
<?xml version="1.0" encoding="EUC-JP"?> ←削除
※以前はXML宣言内に変数を使えませんでしたが(ブログ表示できなくなる)、去年の4月に問い合わせた結果、使用可能になりました。
- meta要素の文字コード指定
-
これについては移設と同時に自動変換されるようなので、移設が終わっている場合は既に変更されているはずです。もしここに「EUC-JP」がある場合は修正します。HTMLの最初あたりにあります。
まだ移設されていない場合も先に修正しておいてもいいと思います。<meta http-equiv="content-type" content="text/html; charset=EUC-JP" />
「<%template_charset>」に変更。
<meta http-equiv="content-type" content="text/html; charset=<%template_charset>" />
XHTMLのテンプレートで移設により自動変換された場合は、終了タグが外れてしまうので、末尾に「 /」を追加します。
<meta http-equiv="content-type" content="text/html; charset=<%template_charset>" />
テンプレートがXHTMLかどうかは、最初に「XHTML」の文字があるかないかで判断できます。例えば、次のような記述があればXHTMLです。なければ「 /」は不要です。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr">
恐らくほとんどないと思いますが次のコードがある場合も同様に修正します。こちらは終了タグ「 /」を入れる必要はありません。
<meta charset="euc-jp">
「<%template_charset>」に変更。
<meta charset="<%template_charset>">
※移設が終わっている場合は、変数を使わずに、直で「utf-8」に変更しても問題ありません。終わっていない状態で「utf-8」にすると文字化けなどの原因になります。
- 管理ページへのリンク
-
管理ページのリンクには「
<%server_url>
」を使うようにします。
「http://blog<%server_no>.fc2.com/
」がテンプレートにある場合は、はすべて「<%server_url>
」に変更します。ない場合は必要ありません。あいだの「/」が不要であることに注意してください。http://blog<%server_no>.fc2.com/control.php
↓
<%server_url>control.php個別の記事編集ページへのリンクは次のようにします。
href="<%server_url>control.php?mode=editor&process=load&eno=<%topentry_no>"
- コメント絵文字装飾スクリプトの修正
-
コメントの絵文字ツールを設置している場合は、アドレス部分を「<%template_comment_js>」に変更します。場所はHTMLのコメントフォーム内です。次のようなコードは変更が必要です。
<script type="text/javascript" src="http://blog2.fc2.com/load.js"></script>
<script type="text/javascript" src="http://blog<%server_no>.fc2.com/load.js"></script>↓変更後
<script type="text/javascript" src="<%template_comment_js>"></script>
投稿用と編集用の2ヶ所あるので両方変更します。既に「<%template_comment_js>」が使われているときはそのままで問題ありません。
ただし、サーバ移設時に「 charset="euc-jp"」が強制挿入される場合があります。つけると文字化けするので削除します。
<script type="text/javascript" src="<%template_comment_js>" charset="euc-jp"></script>
↓削除
<script type="text/javascript" src="<%template_comment_js>"></script>
どうしてもサーバ移設時に「 charset="euc-jp"」を強制挿入されたくない場合は以下のようにします。
<script type="text/javascript" src="<%template_comment_js>" charset="<%template_charset>"></script>
移設でプラグインのスクリプトなどがおかしくなったとき
おかしくないときは変更の必要はありません。
テンプレートのHTMLとプラグインのHTMLにあるscript要素の文字コード指定が移設時に書き加えられます。
■charset属性のないscript要素に「 charset="euc-jp"」が強制挿入
<script type="text/javascript" src="hoge.js"></script>
↓
<script type="text/javascript" src="hoge.js" charset="euc-jp"></script>
今まで「euc-jp」のブログから呼び出されていたcharset属性のないスクリプトファイルは「euc」で作成されていると考えられるためです。何をしても直らないときはこの「 charset="euc-jp"」を削除してみてください。
ただし、スクリプトの配布先で文字コードを指定できるようであれば、「utf-8」でコードを作成してブログに貼り付け直すことを推奨します。例えば、Googleのカスタム検索エンジンなどは「utf-8」で作成し直します。Google AdSenseなど広告サービスによっては配布しているコードの改変を禁止しているものもあります。
また、下記のように移設前から「charset="euc-jp"」や「charset="utf-8"」などがscript要素についているときは変更の必要はありません。変更すると逆に動かなくなることがあります。
<script type="text/javascript" charset="utf-8" src="hoge.js"></script>
<script type="text/javascript" charset="euc-jp" src="hoge.js"></script>
※当ブログで配布しているプラグインなどについては「charset="utf-8"」がついているため、変更の必要ありません。
逆に何らかの理由により、src属性のあるscript要素にcharset属性が強制挿入されなかった場合で、スクリプトの動作がおかしいときは「charset="euc-jp"」をつけることで解決します。
<script type="text/javascript" src="fuga.js" charset="euc-jp"></script>
■エラー表示例(ファイルをeuc保存していたとき)
・「こんにちは」と表示する(charsetなし)→文字化け
・「こんにちは」と表示する(charset="euc-jp"付)→正常
■src属性のないscript要素にも「 charset="euc-jp"」が強制挿入
<script type="text/javascript" charset="euc-jp">
function hoge(){
document.write('こんにちは');
}
</script>
これは必要ないので削除します。
<script type="text/javascript">
function hoge(){
document.write('こんにちは');
}
</script>
掲示板のDISQUSをFC2ブログに設置する際はここに文字コード「euc-jp」を指定する必要がありましたが、サーバーの移設で「utf-8」になれば、指定する必要はなくなるものと思われます。
修正する箇所がないかをチェックするブックマークレット
お気に入りに登録して使用します。下記リンクを(右)クリックして、リンクをお気に入り(ブックマーク)に追加します。Chromeはメニューからブックマークバーを表示させ、そこにリンクをドラッグします。
ブックマークレット : FC2utf修正
PC用のテンプレート編集ページを開きます。タグのハイライトは[OFF]にします。読み込みが終わった後で、お気に入りに追加された上記リンクをクリックすると、修正箇所が左下に表示されます。問題点がなければ、「OK」が表示されます。
上の行が修正箇所で下の行が修正後のコードです。修正部分は改行で区分されています。上図の場合は全部で修正箇所が4箇所あります。
上の行を選択&コピーして検索窓を開いて([Ctrl]+[F]キー)貼り付けると該当箇所が強調表示されます。
下の行の修正部分を選択&コピーして該当箇所に貼り付けます(1行丸ごと書き換えても構いません)。
この修正を繰り返します。修正後に再度、お気に入りに追加された上記リンクをクリックすると問題の箇所が消えていることを確認できます(同じ修正箇所が複数あるときは修正後も再度表示されるので同じように修正します)。
問題点がなくなれば、「OK」が表示されます。あとはテンプレートを更新して終了です。
ただし、移設が完了していないブログについては「※スタイルシート:以下は移設完了後に変更してください」の部分は修正しないでください。移設後に確認するとこの注意書きが消えるので、そのときに修正します。あるいはこの1行を削除して後でまた追記します。移設が完了している場合は「以下は移設完了後に~」が表示されないのでそのまま「utf-8」に修正してください。
途中でタグのハイライトを[ON]にしてしまったときは、再度[OFF]にして、リンクをクリックすれば修正箇所が反映されます。
XHTMLのテンプレートで移設によりmeta要素が自動変換されたときは、末尾に「 /」を追加してください。
備考
移設に伴う共有テンプレートに関する仕様は新blogサーバ 共有テンプレートの仕様、utf-8などの改変についてをご覧ください。移設により、サーバー番号なしと同じ仕様になります。ダウンロード時の改変には注意が必要です。
- 関連記事
- comment
-
tatsu 2012-04-16 14:55 No.1141 #-URL
良記事、何時も有難う御座います。サーバー移転後、script要素にcharset属性がついていない場合に、全部自動でcharset="euc-jp"が付加されているようです。例えばアドセンスとかも・・・文字化け対策とはいえいかがなもんかと思ってしまいます。
-
Pdy 2012-04-17 01:29 No.1142 #-URL
本当ですね、こんにちは。
確認しました。
情報ありがとうございます。
src属性なしの場合は原則意味が無いのですが書き加えてますね。
移設でスクリプトがおかしくならないための対策なのでしょうが、広告サービスによってはコードの改変を許可していないものもあるので、規約違反にさせられてしまう可能性があるかもしれません。
文字コード指定が必要な外部サービスを利用している場合は「utf-8」でコードを作成し直した方が無難ですね。
サーバやファイルアドレスの指定形式によってはコメント絵文字装飾スクリプトもその対象になるらしく、ダウンロードしていた公式テンプレは「euc-jp」が原因で全部文字化けになっていました。
それからPCプラグインのHTMLも「charset="euc-jp"」の付加対象ですね…。
一応追記しました。 -
よんこま 2012-11-13 12:43 No.1565 #-URL
素人で右往左往の私にも丁寧で良くわかりました。大変助かりました! ありがとうございました m(_ _)m