Your SlideShare is downloading. ×
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
テキストファイルの話
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

テキストファイルの話

1,073

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,073
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. テキストファイルの話
  • 2. ・ 文字化けで読めないページがある・ 受け取った文書ファイルが開けない・ ウムラウト記号が壊れた・ 「髙橋」という入力が弾かれた・ ①って書いたら怒られた・ etc.→なんで?  どういう原理で?
  • 3. 001100010011100000101110001000000100100001100101011011100110001101100101001000000111010001101000011001010010000001110011011000010111100101101001011011100110011100111010001000000010000001 とあるファイル0010010110011000100000011110010110111101110101001000000110101101101110011011110111011100100000011101000110100001100101001000000110010101101110011001010110110101111001000011010000101000100000001000000010000000100000011000010110111001100100001000000110101101101110011011110111011100100000011110010110111101110101011100100111001101100101011011000110011000101100001000000111100101101111011101010010000001101110011001010110010101100100001000000110111001101111011101000010000001100110011001010110000101110010001000000111010001101000011001010010000001110010011001010111001101110101011011000111010000100000011011110110011000100000011000010000110100001010001000000010000000100000001000000110100001110101011011100110010001110010011001010110010000100000011000100110000101110100011101000110110001100101011100110010111000100000001000000100100101100110001000000111100101101111011101010010000001101011011011100110111101110111001000000111100101101111011101010111001001110011011001010110110001100110001000000110001001110101011101000010000001101110011011110111010000100000011101000110100001100101001000000110010101101110011001010110110101111001001011000000110100001010001000000010000000100000001000000110011001101111011100100010000001100101011101100110010101110010011110010010000001110110011010010110001101110100011011110111001001111001001000000110011101100001011010010110111001100101011001000010000001111001011011110111010100100000011101110110100101101100011011000010000001100001011011000111001101101111001000000111001101110101011001100110011001100101011100100010000001100001001000000110010001100101011001100110010101100001011101000010111000100000000011010000101000100000001000000010000000100000010010010110011000100000011110010110111101110101001000000110101101101110011011110111011100100000011011100110010101101001011101000110100001100101011100100010000001110100011010000110010100100000011001010110111001100101011011010111100100100000011011100110111101110010001000000111100101101111011101010111001001110011011001010110110001100110001011000010000001111001011011110111010100100000011101110110100101101100011011000000110100001010001000000010000000100000001000000111001101110101011000110110001101110101011011010110001000100000011010010110111000100000011001010111011001100101011100100111100100100000011000100110000101110100011101000110110001100101001011100000110100001010
  • 4. 00110001 00111000 00101110 00100000 01001000 01100101 01101110 01100011 01100101 00100000 0111010001101000 01100101 00100000 01110011 01100001 01111001 01101001 01101110 01100111 00111010 0010000000100000 01001001 01100110 00100000 01111001 01101111 01110101 00100000 01101011 01101110 0110111101110111 00100000 01110100 01101000 01100101 00100000 01100101 01101110 01100101 01101101 0111100100001101 00001010 00100000 00100000 00100000 00100000 01100001 01101110 01100100 00100000 0110101101101110 01101111 01110111 00100000 01111001 01101111 01110101 01110010 01110011 01100101 0110110001100110 00101100 00100000 01111001 01101111 01110101 00100000 01101110 01100101 01100101 0110010000100000 01101110 01101111 01110100 00100000 01100110 01100101 01100001 01110010 00100000 0111010001101000 01100101 00100000 01110010 01100101 01110011 01110101 01101100 01110100 00100000 0110111101100110 00100000 01100001 00001101 00001010 00100000 00100000 00100000 00100000 01101000 0111010101101110 01100100 01110010 01100101 01100100 00100000 01100010 01100001 01110100 01110100 0110110001100101 01110011 00101110 00100000 00100000 01001001 01100110 00100000 01111001 01101111 0111010100100000 01101011 01101110 01101111 01110111 00100000 01111001 01101111 01110101 01110010 0111001101100101 01101100 01100110 00100000 01100010 01110101 01110100 00100000 01101110 01101111 0111010000100000 01110100 01101000 01100101 00100000 01100101 01101110 01100101 01101101 01111001 0010110000001101 00001010 00100000 00100000 00100000 00100000 01100110 01101111 01110010 00100000 0110010101110110 01100101 01110010 01111001 00100000 01110110 01101001 01100011 01110100 01101111 0111001001111001 00100000 01100111 01100001 01101001 01101110 01100101 01100100 00100000 01111001 0110111101110101 00100000 01110111 01101001 01101100 01101100 00100000 01100001 01101100 01110011 0110111100100000 01110011 01110101 01100110 01100110 01100101 01110010 00100000 01100001 00100000 0110010001100101 01100110 01100101 01100001 01110100 00101110 00100000 00001101 00001010 00100000 0010000000100000 00100000 01001001 01100110 00100000 01111001 01101111 01110101 00100000 01101011 011011100110111101110100 8桁に区切ってみる 01110111 01101000 00100000 01100101 01101110 00100000 01100101 01100101 01101001 01101110 01110100 01100101 01101000 01101101 01100101 01111001 01110010 00100000 00100000 0110111001101111 01110010 00100000 01111001 01101111 01110101 01110010 01110011 01100101 01101100 0110011000101100 00100000 01111001 01101111 01110101 00100000 01110111 01101001 01101100 01101100 0000110100001010 00100000 00100000 00100000 00100000 01110011 01110101 01100011 01100011 01110101 0110110101100010 00100000 01101001 01101110 00100000 01100101 01110110 01100101 01110010 01111001 0010000001100010 01100001 01110100 01110100 01101100 01100101 00101110 00001101 00001010
  • 5. 00110111八つの 0/1 の並び方は、全部で256通りある
  • 6. 49 56 46 32 72 101 110 99 101 32 116 104 101 32 115 97 121 105 110 103 58 3232 73 102 32 121 111 117 32 107 110 111 119 32 116 104 101 32 101 110 101109 121 13 10 32 32 32 32 97 110 100 32 107 110 111 119 32 121 111 117 114115 101 108 102 44 32 121 111 117 32 110 101 101 100 32 110 111 116 32 102101 97 114 32 116 104 101 32 114 101 115 117 108 116 32 111 102 32 97 13 1032 32 32 32 104 117 110 100 114 101 100 32 98 97 116 116 108 101 115 46 3232 73 102 32 121 111 117 32 107 110 111 119 32 121 111 117 114 115 101 108102 32 98 117 116 32 110 111 116 32 116 104 101 32 101 110 101 109 121 44 1310 32 32 32 32 102 111 114 32 101 118 101 114 121 32 118 105 99 116 111 114121 32 103 97 105 110 101 100 32 121 111 117 32 119 105 108 108 32 97 108115 111 32 115 117 102 102 101 114 32 97 32 100 101 102 101 97 116 46 32 1310 32 32 32 32 73 102 32 121 111 117 32 107 110 111 119 32 110 101 105 116104 101 114 32 116 104 101 32 101 110 101 109 121 32 110 111 114 32 121 111117 114 115 101 108 102 44 32 121 111 117 32 119 105 108 108 13 10 32 32 3232 115 117 99 99 117 109 98 32 105 110 32 101 118 101 114 121 32 98 97 116116 108 101 46 13 10 さっきの8桁づつを、 対応する数字に直す
  • 7. ASCII表 という変換ルール0~31は制御文字。たとえば10とか13は改行をあらわす
  • 8. 18. Hence the saying: If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle. 故に曰わく、彼れを知りて己れを知れば、百戦して殆うからず。彼れを知 らずし て己れを知れば、一勝一負す。彼れを知らず己れを知らざれば、 戦う毎に必らず殆うし。 (岩波文庫『孫子の兵法』から引用) 英文は、『Project Gutenberg』 より
  • 9. 日本語の文字は、256通りでは 表現できない。 常用漢字だけでも 1,945文字カナ ダケ ヲ ヒョウジ サセテ 256 トオリ ニ オシコンダ コトモ アッタケド
  • 10. それじゃあ、0~256を二つあわせて一文字ってことにすれば?[49 56] [46 32] [72 101] [110 99] … 山     本     哲    也    とかいった風に。これなら 256の2乗 = 65,536 文字まで表せそう…今まで書いてきたASCII文書との互換性がなくなっちゃうからダメ
  • 11. 0~127 が来たらASCII、128~255が来たら「次とあわせて」日本語とみなす。49 56 46 32 72 [201 220] 99 … a b c d e ^^^^^^^^ ここだけ日本語(1文字)これなら、ASCII文字とその他の日本語も共存できそう。
  • 12. ASCII文書に日本語を混ぜるための具体的なルールが、シフトJIS とか、EUC とか呼ばれるもの。エンコーディングともいう。一種類で済んでいればよかったのに。
  • 13. シフトJIS0~127が来たら、ASCIIと同じ文字。129~159 または 224~239 が来たら、 次のデータをくっつけて日本語文字のどれかにあてる。160~223は、半角カナというものにあてられる。「あ」を表すデータは、130, 160。EUC(日本語EUC)0~127が来たら、ASCIIと同じ文字。160~255が来たら、次のデータをくっつけて日本語文字の どれかにあてる。143が来たら、次のデータは半角カナという目印。「あ」を表すデータは、164, 162。
  • 14. シフトJIS で書いたつもりのファイルを EUCと間違えて解読したら…13 10 32 32 137 186 139 シフトJISかな?76 130 204 151 118 151204 130 201 130 168 130162 130 196 129 67 1310 129 117 144 125 143145 138 217 144 69 136 アタリ245 139 179 136 231 131118 131 141 131 79 131137 131 128 40 73 84140 164 143 67 41 129118 130 240 13 10 142192 142 123 130 162 130189 130 181 130 220 130183 129 66 13 10 13 10 EUCかな? 13 10 ハズレ
  • 15. 「エンコーディング」と、「文字セット」という概念 使える文字一覧(文字セット)※符号化文字集合とも言うんだって これらの文字からチョイスして、 abcABC データの並びに落とすルールが エンコーディング 012345 亜阿唖… 本 日 は 晴 天 な り … 13 10 32 32 137 186 139 76 130 204 151 …
  • 16. 文字セットとして主に知っているべきものJIS(JISX0208、6897字)制定後に多少の変動があったが、最終バージョンではこれ?JIS第一水準とか第二水準とか。日本語専用。記号含む。区点コードという背番号を文字に振っているUNICODE世界中のすべての文字を収録することにした。何万字?シフトJIS とか EUC は、この文字セットをエンコードできない。UTF-8というエンコーディングがこれを扱える。
  • 17. UTF-8UNICODEが扱えて、しかもASCII文書と互換性がある。0~127が来たら、ASCIIと同じ文字。192~223が来たら、次のデータとあわせて一文字分。224~239が来たら、次と次のデータをあわせて一文字分。「あ」を表すデータは、227, 129, 130。(たった一文字で3バイトか…)
  • 18. 使っている文字セットとエンコーディングさえわかれば、テキストファイルは必ず読める。わからなくても、ある程度推定はできる
  • 19. 機種依存文字・外字JISで決めているのは6897文字、シフトJISで表現できる文字数は、実はこれより数百文字多い。(EUCも)→ JISで漏れた文字とかも、うちの製品では  サービスで混ぜてあげよう。きっと便利だよ。例:
  • 20. 機種依存文字・外字(2)→ 独自の文字を作る機能をつけてあげたら?  どうせ枠があまってるんだから、活用活用。例:
  • 21. 結果:文書を書いたそのコンピュータ上でないと、完全な文書が読めない→将来にわたって読めるという保証が  なくなるおそれ  せっかくテキストファイルなのに。機種依存文字や外字には注意。
  • 22. テキストファイルと一般的なワープロソフトで作った文書ファイルについて一般的なワープロソフト…  Microsoft Word?  JUSTシステム 一太郎?  富士通 OASIS?共通点:テキストだけでなく、書式なども指定できる。      図形やイラストも混在できる。      レイアウト機能が充実している。      ソフトごとに、様々なセールスポイント。      頻繁なバージョンアップ。
  • 23. ワープロと違って、テキストファイルだけを扱うソフトを、エディタというメモ帳秀丸エディタTeraPadviなどなど。特徴:文字の大きさや色を変えた文書は作れない基本的に、どのソフトでも互いに文書をやりとりできる
  • 24. ワープロで作った文書ファイルは、テキストファイルとして見られるか?特に意識しない限り、そのワープロソフトでしか認識できない特殊な形式でファイルに保存する。これを読むためのルールは一般利用者には知らされない、または簡単には理解できないのが普通。開発した会社が勝手にルールを変えちゃう権利もある
  • 25. Wordで文書作って…
  • 26. メモ帳で読み込んでみた
  • 27. テキストファイル形式の保存に対応している
  • 28. 謎の引継ぎ文書
  • 29. 謎の添付ファイル
  • 30. 解決法…・ 印刷&FAX・ 必ず同じソフトを使わせる・ 文字だけなら、テキスト化・ PDFに変換してしまうのも可  (あとで編集するのは難しいが)
  • 31. PDFは正確にはテキストファイルではないが、仕様がはっきり公開されている。これに沿ったプログラムさえ作れば、読める。
  • 32. 補足的なルールを持ったテキストファイル・ ◆・ HTML・ CSV・ XMLetc.
  • 33. その他の話題・ TAB記号・ 全角スペース・全角英数字・ 保存する媒体・ 「みんなが読めない文書」を望む人も  いるのでは?etc.

×