プレーンテキスト文字化けのブラウザとサーバ対策


公開 (UL): 2019-12-06
更新 (UD): 2019-12-06
閲覧 (DL): 2024-04-20

この記事のもくじ

→本文へ
当サイトは SNS の公式アカウントがないので,「議論ネタ」にする際は,皆さんのブログ,メーリングリスト,SNS や掲示板などで,適当にハッシュタグを付けたりリンクを掲載するなどしてご利用ください。

次の記事

2020-03-23
準プレーンテキスト形式

最近の記事

2024-02-11
XMPP - 長く使える安心チャット
2023-09-15
Perl の正規表現での A と Z の扱い
2023-01-16
Android のキーボード・ショートカット一覧
2022-08-09
代表的な画像ファイル形式一覧
2022-04-04
サイトのローカル試験と実ウェブ上の差を縮める手法(Perl)
新着情報
She appears also the top page.

新着情報 Recent docs.

Sorry, but most of these pages are only Japanese.
福祉改善を阻むオヤクショ思考 «Japanese subsidy system of communication aid device for disabilities cannot be applied those if it's with features except communication, IDK why.»
「意志伝達」しかできない高額な装置にのみ税金が使われる謎制度。
XMPP - 長く使える安心チャット «Gmail doesn't give you notices? Try to use XMPP chat!» (Japanese only)
Gmail 通知が来ない? XMPP チャットはいかが?
「理不尽採点」教育と「英語力低下」 «Japanese English skill ranking in the world has been down. I guess one of the reason is that the government's education policy lacks coherence.»
日本人の英語力が低下,しかも小学校から英語が必修になった世代ほど。「教育方針の一貫性のなさが原因」とする考察。
倫理意識の社会的低下 «One day, I set to stop DM from a banking corporation, but those continue to be sent after that. I'm feeling falling sense of ethics in Japanese society.»
某銀行からの DM が,およそ金融と関係ないもの多数。停止設定後も何ヶ月も配信が続く状況に,倫理意識の社会的低下を感じた話。
オヤクショの「上から目線」という殺傷光線 «Tokyo government gifted me "Okome(rice) coupon". But I have allergic to rice. The government officers often make services considering insufficiently, then people is leaded wrong by that.»
東京都から届いた「おこめクーポン」は,アレルギー持ちは頼みにくく,ウェブは「申し込めない」地雷だらけ。そうなる原因を考察。
給使乖離現象 «"Server and User Design Gap" phenomenon (abbr: SUDG), it's the trend to lack of considerations in design for user of the service.»
愚かな経営者たちが考えた劣悪なウェブサービスにより,人々が一方的に不利益を被るという話。
日本の「IT 人材不足」の正体 «The simple reason why Japanese companies lack IT-skill.»
保険会社からのセキュリティガバガバメールが「IT 人材不足」の正体を暴く。

人気記事 Frequent view pages.

表計算で「令和」に対応する方法
How to adapt the Gengo era "Reiwa" on spreadsheet applicaiton.

古いアプリも OK。「表計算 令和」の検索結果上位御礼!
表計算ソフトで予定表を自動作成する超便利な方法 «How to make the schedule table automatically on spread-sheet.»
「毎月第○×曜日」的な法則は自動で作らせてラクしよう!
表計算ソフトに「個人情報保護機能」を仕込む方法 «Prevention to leak private-data with spread-​sheet macro function.»
「漏えい」のためのフェイルセーフ。「表計算 個人情報」の検索結果上位御礼!
Wary-Basher (ワリバッシャー)
DIY device that enables the handicapped to operate many things with a switch like push-button.

障害者の様々な操作をスイッチ操作で実現する器具。キットも発売中! 「作り方」PDF ダウンロード多数御礼!←地方教育委で人気。
貧乏人を殺す行政の構造 «Structurally, the administrators kill the poors in Japan.»
ヘタすると多摩川に流されるところだった台風 19 号

この記事に対する → 調布市の反応

おすすめ! Recommend

現在当サイト人気 No.1!
Android のキーボード・ショートカット一覧 «The list of Android Keyboard Shortcuts (EN ready).»
Android のスマホやタブレットにキーボードをつないだ時に知っていると便利なキー操作。
[PDF 118KB] 生活保護申請時のオヤクショ対策
申請の「水際作戦」を突破するための心得。「ホームレス総合相談ネットワーク」製作の図解を小サイズ化したもの。

出典 ☞ 路上からもできるわたしの生活保護申請ガイド (2017 年版) (外部リンク)
文字ベース天気予報 «Weather forecast in text mainly from JMA Json-data.»
古いブラウザやスマホ,音読ソフトでも大丈夫! 気象庁の JSON データを利用した文字ベースの天気予報(試験版)。
「事故防シート」について «Cared persons taking with "Jiko-​Bow-​Sheet" prevents from accidents.»
介護現場の負担軽減と事故防止のアイデア
【連載】 キーボードの「キー」の詳しい使い方 «The detial of usage each key on keybord.»
各キーの機能詳細。機能別五十音順一覧。
和易ゐ記 (WAI-WIKI) «WAI-WIKI is light­weight markup language for Japanese, and generates HTML on this server on-​demand.»
当サイトで開発/使用中の日本語向けに特化した軽量マークアップ言語

ご連絡 Contact

▼ メールフォームはこちら
SSL 証明書の更新に不具合が多いため,期限切れエラーが出た際は,お手数ですが「例外指定」をお願いいたします。 一時期,送信できなかったようです。すみません。今は大丈夫だと思います(テストは OK)。

ファイルの暗号化
当サイト管理者(石川)宛にメール添付で送信するファイルを暗号化したい時は,唯一のパスワードを PPOP で取得できます。 PPOP gives a password for encryption of the file(s) attached your mail to the admini­strator of this site M.Ishikawa.
PPOP

MEMO / Email to the Author
あとで調べたい点のメモなどに利用可能。
下部ボタンでそのまま著者にメールできます。 一時期,送信できなかったようです。すみません。今は大丈夫だと思います(テストは OK)。


CAPTCHA: easy math prob in Japanese

時事川柳 News Senryu

パーティー券  
民意も一緒に
  蹴り返し
Kick back both party tickets and people's opinions.

 自民党の一部(?)派閥がパーティー券のノルマを上回る分の売上げを議員にキックバックしておきながら政治資金収支報告書に不記載だった問題が広がりを見せている。なるほど,こうしたことが党内で常套化していたのだとすれば,岸田総理はじめ同党政治家にことごとく「民意を蹴り返すクセ」が付いているのは当然という感じもする。これっぽっちも「悪いこと」と思わなかったのだろうな。そんな人たちに誰が票を入れるのだろうか。少なくとも,岸田の広島と「頭悪いねぇ」と暴言を吐いた議員を選出した長崎に「ふるさと納税」はしないことにしよう。
参考: 自民県 絶対しないぞ ふるさと税

今回はもう一句!

危機感の  
ワリに二階は
  誰も居ず
Having sense of crisis, but nobody takes shelter of 2F.

 大雨などで危機感を持ったら二階のような高い所へ避難すべき的な話を聞いたよーな気がするのだが? パーティー券のノルマ上回り分キックバックの政治資金収支報告書不記載問題で,安倍派は何人も辞任したのに,同じく捜索を受けている二階派に辞任する話があるかというと,今のところ誰もいない。総理は「危機感を持って」とか言っているらしいが,どこが「危機感」なのやら。

(⌚2023-12-19)

ご支援 Support this site.

まだまだ コロナ失業中!!
CORONA-NEET, seeking works now!

この活動をご支援いただける方はこちらへ Could you support this site, see here (but Japanese).
都道府県庁さん, 地方自治体さんや教育委員会さん, 障害者就労支援機関さんやその他公的機関,省官庁さん, 「タダ見」しているだけでは, 格差が広がるだけだと思いませんか?
Welcome!
Amazon    Google
The companies, thanks for many accesses every months! Are the articles I wrote helping for increasing your income? Although, I cannot get even a penny and jobs from that.

 コンピュータで,日本語をはじめとした多言語,多種類の文字を扱う時は,英数字で数文字分に相当するデータで1文字を表すことが多い。ただ,その形式が多種多様。「エンコード形式(または文字コード)」などと呼ばれるが,当然,文章作成時と表示のエンコード形式が合っていないと「文字化け」が起こる。とはいえ,ウェブ記事の標準的な記述規格である HTML では,その記事が何のエンコード形式で書かれているのかを内部に記載する規定があり,「文字化け」することはまずない。
  HTML は他にも画像挿入や複雑なレイアウトなどの様々な機能を持つが,視覚障害者などが「音読ソフト」に読ませて聞く時,それら機能はむしろ邪魔なようで,HTML ではなく,ほぼ「本文の文字のみ」データである「プレーンテキスト形式」で読みたいとの要望が出る。ただこの形式は「文字コード」を明記する規定がないため,文字化けし易い。
 ここでは「プレーンテキスト形式」で記事を読む時(ブラウザ)と,提供する(サーバ)側の双方での「文字化け」対策を考察してみる。

● 「プレーンテキスト」の必要性と「文字化け」

 コンピュータは欧米で発達してきたこともあり,アルファベット程度の文字種に都合のいいデータ単位で扱われる。そのため,日本語を含め英語圏以外の種類の多い文字を扱う時には,英数字で何文字分かに相当するデータを組み合わせて1文字を表すことが多い。その組み合わせ方には様々な形式があり,それらは「エンコード」とか「文字コード」と呼ばれる。当然,記事の作成時に使ったエンコード形式と,表示の形式が違っていると正しく表示しない。それで「文字化け」が起こる。
 ただ,ウェブ記事の記述で標準的に使われる規格である HTML では,エンコード形式が何なのかを記事内に記載する規定があるためか,一般的なウェブ記事で「文字化け」することはあまりない。

 一方,時として HTML ではなく,「プレーンテキストで読みたい」という要望が出る。この形式は,「エンコード」が何であるかなどの記載規定が一切ない,ほぼ「本文の文字だけ」の形式。文字エンコードが何であるか,つまり,日本語がどう表現されているかの情報を記事データ内に含んでいないため,ブラウザが「エンコード形式」を判別できないことがあり,扱いを間違ってしまい,正しく表示されない「文字化け」を起こし易い。正しく読みたいなら,断然 HTML のほうが確実だ。
 ところが,HTML という形式は,文字の他にも画像の挿入やら凝ったレイアウトやら,あるいは閲覧者がクリックすると何か動きがあるなどの様々な機能が付加できるのだが,時としてそれが「余計なこと」になるらしい。企業の宣伝に利用されるようなウェブサイトでは,そうした機能を駆使して,「見た目」を華やかにして,便利な機能が付加されて作られたものが多くなる。一方,視覚障害者などには,「音読ソフト」を使ってウェブ記事を「聞く」人がいる。そうした人は,画像はあまり意味がないし,本文の前や途中に関連記事の一覧や広告が配置されるようなレイアウトだと,そこも「音読ソフト」で読まれる時間がもったいないし,クリックすると詳しい説明が出てくる(逆に言えば,クリックしないと説明を表示しない)ような仕組みがあると,かえって聞きにくくなるというわけだ。

 筆者サイトでは「バリアフリー」の観点もあり,独自開発のシステムで,ここ最近の記事は「プレーンテキスト形式」でも提供できるようにしている。もしこの記事を筆者サイトで読んでいるなら,URL の末尾に“.txt”を付加して読み直すと,プレーンテキスト形式で読めるはず。当サイトの「プレーンテキスト」のエンコードの多くは UTF-8 を使っているが,エンコード情報自体は記事内に記載してはいない。UTF-8 はほぼ国際標準エンコード方式だと思っていたから,最近のブラウザならたいてい読めるだろうと思っていたら,「文字化けして読めなかった」という報告があった。国際標準が標準ではないブラウザもあるらしい。
 とは言っても,「プレーンテキスト形式」では,本文に「エンコード形式」を記載する規定はない。つまり,ブラウザが「エンコード形式」を判断する規定がないから,たとえ本文中に「エンコード形式が何か」を記載し,人が見て分かるようにしておいたとしても,ブラウザがそれを人と同じように解釈して正しく表示してくれることは期待できない。ブラウザへの対策をデータ内でするのはほぼ無理だ。
 しかも,エンコード形式を記載すると,「音読ソフト」はそこも読んでしまうことになるが,たいていは「文字コードが何か」なんて本文の内容と関係ないから,聞く側も分かりづらくなるだろう。あまりそうしたことは本文に記述しないほうがいいような気もするところ。
 だから,本来はブラウザに「エンコード」を指定して表示し直す機能があっていいはずで,実際筆者が使っているブラウザはそれができるのだが,どういうわけか最近のブラウザの中にはその機能が働かないものがあるらしい。
 何? その「バリアフリー」のご時世に逆行するようなブラウザは?
 というわけで,対応できるブラウザと対応できないブラウザ,また,提供する(サーバ)側での対処方法などを考察してみたい。

● 「読む側」の対策

◆ Chrome と IE は使わないほうがいいかも

 「本来はブラウザ側でエンコード設定を変更して表示する機能があっていい」と書いたが,実際,筆者が普段使用するブラウザには全てその機能が付加されている。その機能が働くブラウザの設定は次々節参照。
 ところが,前章で「文字化けで読めない,UTF-8 の設定もできない」と知らせてくれた方が使っていたのが,Chrome(クローム)と呼ばれるブラウザ。調べたところ,少なくとも Chrome の最近のバージョンには「エンコードの設定機能」は元からは備わっておらず,設定したい時は「アドイン」と呼ばれる拡張機能を組み入れる必要があるらしい。筆者が所有するパソコンにはインストールしないブラウザなので詳細は分からないが,もしその「アドイン」の組み入れ方が分からなければ,後述する IE 以外の他のブラウザに乗り換えたほうがいいと思われる。
 また IE(インターネットエクスプローラ)と呼ばれる MS(マイクロソフト)社製のブラウザにはその「エンコードの設定機能」があるが,少なくとも筆者が借用した PC で試した一部のバージョンでは,設定を正しく指定しても表示に反映せず文字化けしたままだった。これでは,もしプレーンテキストで文字化けが起きたら,IE で読むのはあきらめざるを得ないことになる。バージョンにも依るのかも知れないが,これも筆者は普段使わないブラウザなので,どのバージョンなら正しく機能する……といった詳しいことまでは分からない。後継の Edge も同じく詳細不明。やはり前述の Chrome を除いた,「エンコード変更機能」が確実に機能する別のブラウザを使ったほうが,無難じゃないかと思う。

◆ ブラウザ以外のソフトで読む方法

 Chrome や IE で文字化けしてしまい,他のブラウザが使えない時のとりあえずの方法としては,一旦保存をしてから,そのファイルを別のソフトで開くと読める場合がある。たとえばメモ帳や,エディタ,ワープロなどなら,たいていは「文字コード」を指定して開く機能がある。MS 社のブラウザで「エンコードの設定がまともに機能せず表示できなかった」と述べたが,同じパソコンの「メモ帳」で開いたら,UTF-8 もちゃんと読めたりした。この会社の開発方針はよく分からん。
 ただこの方法でも,ブラウザの表示がまともではないので,保存した時に元のデータの通りに保存されず,データの制度が落ち,別のソフトで開いた時に,やはり文字化けしてしまう可能性が残る。

 いずれにせよ,「ブラウザでエンコード指定をして読めない」場合,「プレーンテキスト形式」で文字化けしたら,そのままでは読む方法がないということ。そんな「バリアフリー」のご時世にも逆行するようなブラウザなど,お薦めできない。

◆ その他のブラウザでの設定

 筆者が主に使っているブラウザは FireFox(ファイヤーフォックス)と呼ばれるもの。とりあえずは確実に「エンコード変更機能」が働く。
 筆者サイトのテキストデータのエンコードは,ほぼ UTF-8 なので,「表示」メニュー→テキストエンコード→UNICODE あるいは UTF-8 を選択することで正しく表示されるはずだ。

▼ FireFox でのエンコード指定
FireFox でのエンコード指定

 なお,メニューが表示されていない時は,[F10] または [Alt] キーを押すと現れるほか,[Alt]+[V] と押すと「表示メニュー」が現れる。

 いずれも,前述した2つを除く他のブラウザでもたいてい同様な設定の方法で対処できると思われるので,試してほしい。

● Apache の設定

 この章はデータを提供する側……つまり「サーバ側」の技術的な記事のため,ウェブ記事を「読むだけ」の側の人にとって関係性は薄いので必死に読まなくても大丈夫。

 プレーンテキストでもデータを提供するようにしてから,しばらくは「特に問題無し」と思っていたのに,ある方から「文字化けして見れない」と聞き,いつも自分でやっているように「エンコードを UTF-8 に設定してください」と言って対応したら,前述のとおり「Chrome では設定できないんです」と言われて,そんなアホなと……。
 視覚障害のある人は音読ソフトなどでウェブ記事を「聞く」人がいることは知っていたから,画像や広告,関連記事などのリンクを含まない「プレーンテキスト」で読めるようにしておくことは「バリアフリー」の観点で有効な手段だと思っていた。一方で「プレーンテキスト」は,HTML と違って「エンコード形式」の記載規定がないため,たとえ記載しても,ブラウザが認識してくれるとは限らない。だから,「プレーンテキスト」を扱う可能性もあるであろうブラウザであれば,エンコードを指定して表示する機能もあるだろうと思っていたから,そうではないブラウザがあると知り,むしろビックリ。

 世界標準となりつつある UTF-8 で文字化け起こして直せないとか,だからと言って,読む人が使うブラウザの「デフォルトのテキストエンコード」が何かをサーバ側で検知し,それに合わせてデータを送るなんてこともまず無理……となれば,ほぼ打つ手なしか,と思われた。
 とりあえずサーバソフトの Apache について調べてみたら,どうやらデフォルトのエンコード形式を指定するディレクティブがあるよう。

▼ Apache デフォルトエンコード指定
    AddDefaultCharset   On  |  Off  |  <encode>

 これを On に指定すると,レスポンスの content-type ヘッダ情報に charset=…… が付加されるようになるらしい。
 ただ,検索結果の記事の中には「これが原因で文字化けした」ようなものもあった。HTML 記事内での指定と,サーバ設定のデフォルトエンコードが衝突したらしい。そこで,このディレクティブで Off を指定したら文字化けしなくなったとか。当サイトでも,初期のころの HTML 記事は「シフト JIS」のものもあるので,衝突は避けたいところ。
 今回,エンコードの指定をしたいのは「プレーンテキスト」だけだ。そこで,<Files>……</Files> ディレクティブと組み合わせてみた。

▼ Apache プレーンテキストのみ UTF-8 指定
    <Files ~ "\.txt$">
    AddDefaultCharset  UTF-8
    </Files>

 上記を .htaccess 内に記述。これでプレーンテキスト形式の拡張子「.txt」を持つファイル送信の時だけ,以下のレスポンスヘッダが送出されるようになった……はず。

▼ Apache プレーンテキストのレスポンスヘッダ
    content-type: text/plain; charset=UTF-8

 「はず」というのは……なにぶん,使っているブラウザがことごとく文字化け「しない」ものばかりで,改善されたかどうか確認しづらい。手元の FireFox では,別に上記指定前でも文字化けなく表示していたが,当サイトから読んだテキストファイルは「エンコードの指定がありません」という警告が出ていた。上記指定後,警告は消え,ログを確認すると上記ヘッダも付加されていたから,他も大丈夫な「はず」だと。
 いちおう上記対策後,「Chrome で文字化けして読めない」と報告をくれた方に再度同じテキストデータを読んでもらったところ「読めた」という報告は受けた。また,「エンコード指定をしても文字化けした」IE でも確認したが,やはり文字化けは起きなかった。

 しかし,データは何も変えてないんだわ。だいたい,手元に保存したテキストファイルを読む時は「レスポンスヘッダ」なんか付加されないから,「エンコード指定」もないわけで。それって Chrome ではウェブ上のテキストデータは読めても,一旦保存したファイルを開くと,文字化けして読めなくなったりするということか。スゴい設計だ。使わないから分からんけど……まぁ,そうした「バリアフリー」を無視するような業者が作ったブラウザは,今後も使わないに越したことはないと思っている。



© M.Ishikawa; TREEWARE 2024.