Mais conteúdo relacionado テキストファイルの話2. ・ 文字化けで読めないページがある
・ 受け取った文書ファイルが開けない
・ ウムラウト記号が壊れた
・ 「髙橋」という入力が弾かれた
・ ①って書いたら怒られた
・ etc.
→なんで?
どういう原理で?
3. 001100010011100000101110001000000100100001100101011011100110001101100101001000000111010001101
000011001010010000001110011011000010111100101101001011011100110011100111010001000000010000001
とあるファイル
001001011001100010000001111001011011110111010100100000011010110110111001101111011101110010000
001110100011010000110010100100000011001010110111001100101011011010111100100001101000010100010
000000100000001000000010000001100001011011100110010000100000011010110110111001101111011101110
010000001111001011011110111010101110010011100110110010101101100011001100010110000100000011110
010110111101110101001000000110111001100101011001010110010000100000011011100110111101110100001
000000110011001100101011000010111001000100000011101000110100001100101001000000111001001100101
011100110111010101101100011101000010000001101111011001100010000001100001000011010000101000100
000001000000010000000100000011010000111010101101110011001000111001001100101011001000010000001
100010011000010111010001110100011011000110010101110011001011100010000000100000010010010110011
000100000011110010110111101110101001000000110101101101110011011110111011100100000011110010110
111101110101011100100111001101100101011011000110011000100000011000100111010101110100001000000
110111001101111011101000010000001110100011010000110010100100000011001010110111001100101011011
010111100100101100000011010000101000100000001000000010000000100000011001100110111101110010001
000000110010101110110011001010111001001111001001000000111011001101001011000110111010001101111
011100100111100100100000011001110110000101101001011011100110010101100100001000000111100101101
111011101010010000001110111011010010110110001101100001000000110000101101100011100110110111100
100000011100110111010101100110011001100110010101110010001000000110000100100000011001000110010
101100110011001010110000101110100001011100010000000001101000010100010000000100000001000000010
000001001001011001100010000001111001011011110111010100100000011010110110111001101111011101110
010000001101110011001010110100101110100011010000110010101110010001000000111010001101000011001
010010000001100101011011100110010101101101011110010010000001101110011011110111001000100000011
110010110111101110101011100100111001101100101011011000110011000101100001000000111100101101111
011101010010000001110111011010010110110001101100000011010000101000100000001000000010000000100
000011100110111010101100011011000110111010101101101011000100010000001101001011011100010000001
100101011101100110010101110010011110010010000001100010011000010111010001110100011011000110010
1001011100000110100001010
4. 00110001 00111000 00101110 00100000 01001000 01100101 01101110 01100011 01100101 00100000 01110100
01101000 01100101 00100000 01110011 01100001 01111001 01101001 01101110 01100111 00111010 00100000
00100000 01001001 01100110 00100000 01111001 01101111 01110101 00100000 01101011 01101110 01101111
01110111 00100000 01110100 01101000 01100101 00100000 01100101 01101110 01100101 01101101 01111001
00001101 00001010 00100000 00100000 00100000 00100000 01100001 01101110 01100100 00100000 01101011
01101110 01101111 01110111 00100000 01111001 01101111 01110101 01110010 01110011 01100101 01101100
01100110 00101100 00100000 01111001 01101111 01110101 00100000 01101110 01100101 01100101 01100100
00100000 01101110 01101111 01110100 00100000 01100110 01100101 01100001 01110010 00100000 01110100
01101000 01100101 00100000 01110010 01100101 01110011 01110101 01101100 01110100 00100000 01101111
01100110 00100000 01100001 00001101 00001010 00100000 00100000 00100000 00100000 01101000 01110101
01101110 01100100 01110010 01100101 01100100 00100000 01100010 01100001 01110100 01110100 01101100
01100101 01110011 00101110 00100000 00100000 01001001 01100110 00100000 01111001 01101111 01110101
00100000 01101011 01101110 01101111 01110111 00100000 01111001 01101111 01110101 01110010 01110011
01100101 01101100 01100110 00100000 01100010 01110101 01110100 00100000 01101110 01101111 01110100
00100000 01110100 01101000 01100101 00100000 01100101 01101110 01100101 01101101 01111001 00101100
00001101 00001010 00100000 00100000 00100000 00100000 01100110 01101111 01110010 00100000 01100101
01110110 01100101 01110010 01111001 00100000 01110110 01101001 01100011 01110100 01101111 01110010
01111001 00100000 01100111 01100001 01101001 01101110 01100101 01100100 00100000 01111001 01101111
01110101 00100000 01110111 01101001 01101100 01101100 00100000 01100001 01101100 01110011 01101111
00100000 01110011 01110101 01100110 01100110 01100101 01110010 00100000 01100001 00100000 01100100
01100101 01100110 01100101 01100001 01110100 00101110 00100000 00001101 00001010 00100000 00100000
00100000 00100000 01001001 01100110 00100000 01111001 01101111 01110101 00100000 01101011 01101110
01101111
01110100 8桁に区切ってみる
01110111
01101000
00100000
01100101
01101110
00100000
01100101
01100101
01101001
01101110
01110100
01100101
01101000
01101101
01100101
01111001
01110010
00100000
00100000
01101110
01101111 01110010 00100000 01111001 01101111 01110101 01110010 01110011 01100101 01101100 01100110
00101100 00100000 01111001 01101111 01110101 00100000 01110111 01101001 01101100 01101100 00001101
00001010 00100000 00100000 00100000 00100000 01110011 01110101 01100011 01100011 01110101 01101101
01100010 00100000 01101001 01101110 00100000 01100101 01110110 01100101 01110010 01111001 00100000
01100010 01100001 01110100 01110100 01101100 01100101 00101110 00001101 00001010
6. 49 56 46 32 72 101 110 99 101 32 116 104 101 32 115 97 121 105 110 103 58 32
32 73 102 32 121 111 117 32 107 110 111 119 32 116 104 101 32 101 110 101
109 121 13 10 32 32 32 32 97 110 100 32 107 110 111 119 32 121 111 117 114
115 101 108 102 44 32 121 111 117 32 110 101 101 100 32 110 111 116 32 102
101 97 114 32 116 104 101 32 114 101 115 117 108 116 32 111 102 32 97 13 10
32 32 32 32 104 117 110 100 114 101 100 32 98 97 116 116 108 101 115 46 32
32 73 102 32 121 111 117 32 107 110 111 119 32 121 111 117 114 115 101 108
102 32 98 117 116 32 110 111 116 32 116 104 101 32 101 110 101 109 121 44 13
10 32 32 32 32 102 111 114 32 101 118 101 114 121 32 118 105 99 116 111 114
121 32 103 97 105 110 101 100 32 121 111 117 32 119 105 108 108 32 97 108
115 111 32 115 117 102 102 101 114 32 97 32 100 101 102 101 97 116 46 32 13
10 32 32 32 32 73 102 32 121 111 117 32 107 110 111 119 32 110 101 105 116
104 101 114 32 116 104 101 32 101 110 101 109 121 32 110 111 114 32 121 111
117 114 115 101 108 102 44 32 121 111 117 32 119 105 108 108 13 10 32 32 32
32 115 117 99 99 117 109 98 32 105 110 32 101 118 101 114 121 32 98 97 116
116 108 101 46 13 10
さっきの8桁づつを、
対応する数字に直す
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』 より
13. シフトJIS
0~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 151
204 130 201 130 168 130
162 130 196 129 67 13
10 129 117 144 125 143
145 138 217 144 69 136
アタリ
245 139 179 136 231 131
118 131 141 131 79 131
137 131 128 40 73 84
140 164 143 67 41 129
118 130 240 13 10 142
192 142 123 130 162 130
189 130 181 130 220 130
183 129 66 13 10 13 10 EUCかな?
13 10
ハズレ
15. 「エンコーディング」と、「文字セット」
という概念
使える文字一覧(文字セット)※符号化文字集合とも言うんだって
これらの文字からチョイスして、
abcABC データの並びに落とすルールが
エンコーディング
012345
亜阿唖…
本 日 は 晴 天 な り …
13 10 32 32 137 186 139 76 130 204 151 …