質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

28389閲覧

apache2.4での日本語の文字化けについて

HajimeHamada

総合スコア20

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

2クリップ

投稿2018/02/08 16:38

編集2018/02/08 23:12

EUCで書いたHTMLが、以下の環境でどうしても文字化けしてしまいます。

OS: CentOS 7.3
apache: apache 2.4.6

HTMLは、

HTML

1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<html lang="ja"> 3<head> 4<meta http-equiv="content-type" content="text/html;charset=euc-jp"> 5</head> 6<body> 7あいうえお 8</body 9</html>

という単純なものです。

検索すると、httpd.confの

AddDefaultCharset UTF-8

をコメントアウト、または、

AddDefaultCharset off

として、httpdを再起動しろ、という情報がたくさん表示されるのですが、これを行っても文字化けは全く治りません。なにか見落としがあるかと思うので、確認点など指摘いただけると助かります。よろしくお願いします。

(2018.2.9 追記)
役に立つかわかりませんが、文字化けのスクリーンショットです。ブラウザは、Firefox 58.0.1です。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/02/08 22:31

どうしてもEUCでなければならない理由はありますか?
defghi1977

2018/02/08 22:55

WEBブラウザ側の文字エンコーディングを変更することで正しく表示できるか確認願います. また実際の文字化けのスクリーンショット(もしくは文字化け後のコード)があると, 経験則的なアドバイスが受けられるかもしれません.
HajimeHamada

2018/02/08 23:08

過去のページを移行する必要があり、どうしてもEUCでの表示が必要となっています。
HajimeHamada

2018/02/08 23:09

ブラウザの文字エンコーディングをEUC-JPにすると、問題なく表示できます。
guest

回答4

0

まず文字化けしている原因の特定をすることが必要です。

ブラウザ表示の文字化けは、表示時に適用される charset が適切でない場合に発生します。
で、HTML 4.01仕様では charset の設定の優先順位は以下だそうです。
Webブラウザが文字コードを判定する基準は?

1,HTTPにおけるContent-Typeヘッダのcharsetパラメータ

2,HTML文書内のMETA宣言およびhttp-equiv属性で設定された、Content-Typeヘッダのcharsetパラメータ
3,HTML文書内の各要素のcharset属性

ブラウザの開発ツールで確認すると、ブラウザへ送信されてきている情報を確認することが出来ます。

で、ここからは想像ですが、多分レスポンスヘッダ内の charset が意図したものと違うものになっているのではないかと。

AddDefaultCharset は所詮 Default なので、どこかで設定が入ってしまえば適用されません。
該当箇所を、システム構成から洗い出して確認する必要があります。

投稿2018/02/09 00:28

編集2018/02/09 00:29
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HajimeHamada

2018/02/09 00:56

ご指摘ありがとうございます。レスポンスヘッダを確認したところ、たしかに、charset=UTF-8となっています。 ここからどのように調査して原因を追求すればよいかがわからないのですが、何か見たほうがいい設定などありますでしょうか?
退会済みユーザー

退会済みユーザー

2018/02/09 01:07

サーバ/ブラウザ間でヘッダを記述/上書きできる箇所を洗い出して、確認するしか無いです。 ただ、既存システムの移行なら、指定する箇所も揃えておいたほうが不具合の確率が減るので、既存システム側のどこでヘッダの charset を記述しているか調べ、それと設定を合わせるのが良いと思います。
guest

0

HTMLファイルが実際にはUTF-8で保存されているに一票。

投稿2018/02/08 22:49

hichon

総合スコア5737

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HajimeHamada

2018/02/08 23:14

残念ながら、文字コードはEUC-JPとなっているようです。
guest

0

自己解決

結局、該当するページのあるDirectoryに、.htaccessを置き、

AddDefaultCharset EUC-JP AddType "text/html; charset=EUC-JP" .html

と指定することで、文字化けはなくなりました。できれば、各HTMLファイルでのmetaタグでの宣言を見てくれればいいのですが、それは今のところできていません。

中途半端ですが、ひとまずこの質問についてはcloseしたと思います。いろいろご意見を下さった方、ありがとうございました。

投稿2018/02/14 08:56

HajimeHamada

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

大文字小文字の関係で有効になっていない可能性は?

https://httpd.apache.org/docs/2.4/mod/core.html

AddDefaultCharset Off // Offの'O'初めが大文字

ネットでは大文字で記載している記事が多い。公式docはどれじゃー(ソース無し)

charset=EUC-JP // 全部大文字

投稿2018/02/09 00:37

mosapride

総合スコア1480

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HajimeHamada

2018/02/09 00:41

ご指摘ありがとうございます。残念ながら、上記2つとも同じように文字化けしてしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問