携帯サイトを構築しているのですが、

テンプレートをEUC-JPで作成して
出力する際に、
mb_convert_encoding($data,'SJIS', 'EUC-JP' );
という形で、EUC-JPのデータをShift-Jisに変換してます。

以下のサイトで文法チェックをすると
点数がすごく低いし、内容が文字化けしちゃいます。
http://htmllint.itc.keio.ac.jp/htmllint/htmllint.html

やはりこういうチェックもきちんとしてある程度の点数は
欲しいと思っているのですが、どうしたらいいでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2009/03/02 17:00:45
  • 終了:2009/03/09 17:05:03

回答(4件)

id:kenz-firespeed No.1

Kenz回答回数104ベストアンサー獲得回数32009/03/02 17:09:14

ポイント23pt

文字化けしているって事はヘッダ情報がShift-JISになってないんじゃ・・・

点数が低いのは一つずつ地道につぶすしかないです。

有る段階から一気にあがるのでがんばりましょう

id:hopefully

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

この書式では駄目ということですかね?

<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS">

にしないと駄目でしょうか?

2009/03/02 17:19:26
id:y-kawaz No.2

y-kawaz回答回数1419ベストアンサー獲得回数2252009/03/02 17:24:38

ポイント23pt

Content-Type指定をmetaタグでするのはあくまで次善手段で、本来はちゃんと Content-Type"ヘッダー" で指定するべきかと思います。

phpなら↓こうですね。

header("Content-Type: text/html; charset=Shift_JIS");
id:hopefully

すいません。いまいちわかってないのですが、

テンプレートに記述したい場合に

Content-Type"ヘッダー"というのは記述できるのでしょうか?

Content-Type"ヘッダー"というのはプログラムだけで対応??

2009/03/02 17:34:27
id:kenz-firespeed No.3

Kenz回答回数104ベストアンサー獲得回数32009/03/02 17:32:04

ポイント22pt

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

で良いと思います。

もしかして、ふと思ったんですが、元のテキストがEUC-JPじゃないとか

mb_convert_encoding($data,'SJIS', 'auto' ); にするとどうですか?

id:niwa-mikiho No.4

niwa-mikiho回答回数508ベストアンサー獲得回数382009/03/02 17:52:39

ポイント22pt

実際の文字コード、HTTP ヘッダと、HTML に書かれてる文字コードの違いがあるのではないでしょうか?


Content-type: text/html; charset=Shift_JIS\n\n


といったものはプログラムの中での出力です。

変換するときの、変換先文字コード指定

HTML に書かれてる文字コードの指定

HTTP ヘッダの文字コードを明確化

これらを見直してみてください。

  • id:pahoo
    Another HTML-lint gateway のチェック結果に細かい解説が表示されるので、その通りに改善すればいいでしょう。
    何か支障はありますか?
  • id:hopefully
    チェックした結果が下に出るのですが、
    その部分が、文字化けしているんですよ・・

    そこを文字化けしないようにチェックしたいなと思いまして。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません