SlideShare a Scribd company logo
1 of 48
Download to read offline
文字コード略歴
            よこやままさふみ
                 社内勉強会
               2012/05/18


文字コード略歴            Powered by Rabbit 2.0.6
自己紹介
    ✓ 横山昌史
    ✓ 入社4年目
    ✓ プログラマ etc...
    ✓ 所属プロジェクト
          ✓ Java、UNIX、雑用 etc...
          ✓ 文字コードの "るつぼ"

文字コード略歴                           Powered by Rabbit 2.0.6
Rabbitについて

    ✓ プレゼンテーションツール
    ✓ 実装: Ruby/GTK
    ✓ 動作: UNIX/Win/Mac
    ✓ 文章とデザインの分離
          ✓ バージョン管理しやすい


文字コード略歴                   Powered by Rabbit 2.0.6
文字コードとは


    ✓ 文字をコンピュータで扱うための
      符号化方式
    ✓ エンコード、キャラクターセットとも
      呼ばれる


文字コード略歴             Powered by Rabbit 2.0.6
符号化

    ✓ 文字や音声などを0と1のデジタ
      ルデータに変換すること
    ✓ 16進数で記述されることが多い
          ✓ Javaなどでは、頭に"0x"を付けると16
            進数として扱われる



文字コード略歴                        Powered by Rabbit 2.0.6
よく使われる文字コード

    ✓ ASCII
    ✓ Shift_JIS
    ✓ UTF-8(Unicode)
    ✓ EBCDIC


文字コード略歴                Powered by Rabbit 2.0.6
ASCII
文字コード略歴   Powered by Rabbit 2.0.6
ASCII

            American
            Standard
            Code for
          Information
          Interchange


文字コード略歴                 Powered by Rabbit 2.0.6
ASCII


    ✓ 英語を表現するための文字コード
          ✓ 英字アルファベット、記号
          ✓ いわゆる半角文字




文字コード略歴                    Powered by Rabbit 2.0.6
ASCII

    ✓ 1文字につき7ビットの1バイトコ
      ード
                    7
          ✓ 7ビット = 2 = 128
          ✓ 16進数で言うと0x00〜0x7Fまで
          ✓ 1バイト = 8ビットのため、1ビット余り


文字コード略歴                       Powered by Rabbit 2.0.6
ASCIIの例


    ✓ Heisei 24
          ✓ 48 65 69 73 65 69 20 32 34
           ✓ 16進数(0xは省略)




文字コード略歴                                  Powered by Rabbit 2.0.6
JIS X 0201

    ✓ 日本工業規格
    ✓ 一部の符号位置がASCIIと違う
    ✓ 半角カナが使える
          ✓ 8ビット目を拡張



文字コード略歴                     Powered by Rabbit 2.0.6
ASCIIと異なる文字


    ✓ 符号位置0x5C
          ✓ ASCII:半角バックスラッシュ
          ✓ JISX0201:半角円記号




文字コード略歴                        Powered by Rabbit 2.0.6
ASCIIと異なる文字


    ✓ 符号位置0x7E
          ✓ ASCII:半角チルダ
          ✓ JISX0201:半角オーバーライン




文字コード略歴                          Powered by Rabbit 2.0.6
ASCIIと異なる文字

    ✓ ASCIIかJISX0201かは曖昧
          ✓ 環境によって表示が変わる

    ✓ 日本のフォントは円記号
    ✓ 外国のフォントはバックスラッシュ
    ✓ 7Eは日本でも大抵チルダ

文字コード略歴                    Powered by Rabbit 2.0.6
Shift_JIS
文字コード略歴   Powered by Rabbit 2.0.6
Q&A

    ✓ Q.あなたの母語は何語ですか?
          ✓ A.日本語

    ✓ Q.日本語は英字アルファベットだ
      けで表現できますか?
          ✓ A.いいえ


文字コード略歴                   Powered by Rabbit 2.0.6
ひらがなや漢字が必要

    ✓ 常用漢字 2,136文字(2010年
      改定)
                     8
    ✓ 1バイト = 8ビット = 2 = 256
    ✓ 1バイトでは表現できない


文字コード略歴                   Powered by Rabbit 2.0.6
2バイトコード


    ✓ 1文字を2バイトで符号化
                     16
    ✓ 2バイト = 16ビット = 2 =
      65,536



文字コード略歴                    Powered by Rabbit 2.0.6
JIS X 0208
    ✓ 日本工業規格
    ✓ JIS第1・第2水準漢字を定義
    ✓ 最新版では6,879文字を収録
    ✓ 1983年に大幅な変更
          ✓ 異字体の符号位置入れ替え
          ✓ 字形の変更

文字コード略歴                    Powered by Rabbit 2.0.6
JIS X 0213
    ✓ 日本工業規格
    ✓ JIS X 0208の拡張(後方互換)
    ✓ JIS第3・第4水準漢字を定義
    ✓ 環境によってはJISX0213に対応
      していない(JIS第3・第4水準漢字
      が使えない)

文字コード略歴                 Powered by Rabbit 2.0.6
Shift_JISの成り立ち


                 JIS X 0201
                      +
          JIS X 0208(JIS X 0213)



文字コード略歴                            Powered by Rabbit 2.0.6
Shift_JISの特徴


    ✓ 日本語が表現できる
    ✓ 半角カナが使える
          ✓ JISX0201との互換性




文字コード略歴                      Powered by Rabbit 2.0.6
Shift_JISの例



    ✓ 平成 24
          ✓ 95 BD 90 AC 20 32 34




文字コード略歴                            Powered by Rabbit 2.0.6
Shift_JISの欠点

    ✓ 全角半角問題
          ✓ 「A」と「A」、「ア」と「ア」など
          ✓ 全角文字を扱える文字コード共通の問
            題

    ✓ JISX0201の副作用
          ✓ だめ文字


文字コード略歴                         Powered by Rabbit 2.0.6
Shift_JISの派生

    ✓ WindowsではShift_JISを拡張し
      た文字コードが使われている
          ✓ Windows31-JやMS932やCP932な
            どと呼ばれる
          ✓ 重複符号化(㈱問題)
           ✓ 同じ文字に複数の符号位置



文字コード略歴                          Powered by Rabbit 2.0.6
UTF-8
文字コード略歴   Powered by Rabbit 2.0.6
Q&A

    ✓ Q.今はどんな時代ですか?
          ✓ A.国際化時代

    ✓ Q.Shift_JISの欠点はどこですか?
          ✓ A.日本語しか扱えない



文字コード略歴                   Powered by Rabbit 2.0.6
Unicode


    ✓ 世界中の言語を表現できる文字
      コードの仕様がUnicode
    ✓ 110,181文字(2012年1月)



文字コード略歴                Powered by Rabbit 2.0.6
Unicode



    ✓ Unicodeの実装の一つがUTF-8
          ✓ 他にもUTF-16など




文字コード略歴                    Powered by Rabbit 2.0.6
UTF-8の特徴

    ✓ ASCIIを拡張
          ✓ Shift_JISとは違い、JISX0201の拡張
            ではない
          ✓ 半角カナなどの符号位置がShift_JISと
            違う
          ✓ だめ文字がない


文字コード略歴                           Powered by Rabbit 2.0.6
1文字のバイト数

    ✓ ASCII
          ✓ 全て半角文字 = 全て1バイト

    ✓ Shift_JIS
          ✓ 半角 = 1バイト
          ✓ 全角 = 2バイト


文字コード略歴                       Powered by Rabbit 2.0.6
1文字のバイト数


    ✓ UTF-8
          ✓ 半角 = 主に1バイト
          ✓ 全角 = 日本語は3バイト
           ✓ 記号は3バイトか2バイト




文字コード略歴                     Powered by Rabbit 2.0.6
UTF-8の例



    ✓ 平成 24
          ✓ E5 89 B3 E6 88 90 20 32 34




文字コード略歴                                  Powered by Rabbit 2.0.6
1バイトでない半角文字


    ✓ (半角)が2種類
          ✓ 5C (ASCII): 規格上はバックスラッシュ
          ✓ C2 A5 (UTF-8): 規格上は円記号
           ✓ 2バイトの半角文字




文字コード略歴                          Powered by Rabbit 2.0.6
1バイトでない半角文字

    ✓ ~(半角)も2種類
          ✓ 7E (ASCII): 規格上はチルダ
          ✓ E2 80 BE (UTF-8): 規格上はオーバ
            ーライン
           ✓ 3バイトの半角文字




文字コード略歴                           Powered by Rabbit 2.0.6
半角カナ

    ✓ ア (半角)
          ✓ B1 (Shift_JIS)
          ✓ EF BD B1 (UTF-8)
            ✓ UTF-8の半角カナは全て3バイト

    ✓ 単純なバイト数チェックでは、半角
      か全角か判別できない

文字コード略歴                           Powered by Rabbit 2.0.6
IBM版とMS版

    ✓ IBM-Unicode(一般的な
      Unicode)とMS-Unicode(マイ
      クロソフト版Unicode)で符号位
      置が異なる文字がある
          ✓ いわゆる波ダッシュ問題の要因



文字コード略歴                      Powered by Rabbit 2.0.6
波ダッシュ問題

    ✓ Windowsとそれ以外のOS間で
      の通信時などに文字化け
    ✓ 対象文字は10文字程度(環境に
      よる)
          ✓〜 — - ‖ ∥ ¦ ¬ ¢ £


文字コード略歴                        Powered by Rabbit 2.0.6
EBCDIC
文字コード略歴   Powered by Rabbit 2.0.6
EBCDIC


    ✓ IBMによって定義された文字コー
      ド
          ✓ IBM製のメインフレーム(汎用機)など
            で現在も使用されている




文字コード略歴                     Powered by Rabbit 2.0.6
EBCDIC

    ✓ 半角文字の符号位置がASCIIと
      異なる
    ✓ 全角文字の表現方法がShift_JIS
      やUTF-8と異なる
    ✓ 基本的にJIS第3・第4水準は含ま
      れない

文字コード略歴               Powered by Rabbit 2.0.6
半角文字

    ✓ すべて1バイト
          ✓ 8ビット目まで使用

    ✓ 制御文字エリアが大きい
          ✓ 0x00〜0x3Fと0xFF
          ✓ 汎用機で使用される特殊な制御文字
            が含まれている


文字コード略歴                      Powered by Rabbit 2.0.6
全角文字

    ✓ 半角文字との区別は制御文字で
      行う
          ✓ 全角の開始位置がシフトアウト(0x0E)
          ✓ 全角の終了位置がシフトイン(0x0F)

    ✓ 略してSO/SIなどと呼ばれる

文字コード略歴                      Powered by Rabbit 2.0.6
SO/SI



    ✓ 平成 24
          ✓ 0E 45 8D 45 BA 0F 40 F2 F4




文字コード略歴                                  Powered by Rabbit 2.0.6
うわっ…
    ✓ SIの欠如
          ✓ 0E 45 8D 45 BA

    ✓ SO/SIのネスト
          ✓ 0E 45 8D 0E 45 BA 0F 0F

    ✓ SO/SIを対として扱うのではなく、
      モード切替文字として扱うことで
      対応
文字コード略歴                               Powered by Rabbit 2.0.6
まとめ




文字コード略歴         Powered by Rabbit 2.0.6
参考
    ✓ プログラマのための文字コード技
      術入門
    ✓ 正規表現クックブック(66ページ)
    ✓ AIX 5L 日本語コード一覧表
          ✓ jp_codebookで検索

    ご静聴ありがとうございました。
文字コード略歴                      Powered by Rabbit 2.0.6

More Related Content

Viewers also liked

フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)kozossakai
 
Linux でavr開発環境を構築する+mbed(20100612koedo94)
Linux でavr開発環境を構築する+mbed(20100612koedo94)Linux でavr開発環境を構築する+mbed(20100612koedo94)
Linux でavr開発環境を構築する+mbed(20100612koedo94)Kenichiro MATOHARA
 
新しい生活をLinuxといっしょに始めよう!
新しい生活をLinuxといっしょに始めよう!新しい生活をLinuxといっしょに始めよう!
新しい生活をLinuxといっしょに始めよう!Shun Kittaka
 
文字コードとセキュリティ
文字コードとセキュリティ文字コードとセキュリティ
文字コードとセキュリティKenta Yamamoto
 
マイコンでマルチタスク
マイコンでマルチタスクマイコンでマルチタスク
マイコンでマルチタスクKatsuhiko Terawaki
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!Masaki Muranaka
 
独学道場アセンブリの会
独学道場アセンブリの会独学道場アセンブリの会
独学道場アセンブリの会Ryota Suenaga
 
Cコンパイラの改造(未)
Cコンパイラの改造(未)Cコンパイラの改造(未)
Cコンパイラの改造(未)7shi
 
Fontconfigことはじめ
FontconfigことはじめFontconfigことはじめ
FontconfigことはじめTakao Baba
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)Hiroshi Tokumaru
 
5分でインストール!awsでzabbix3.0
5分でインストール!awsでzabbix3.05分でインストール!awsでzabbix3.0
5分でインストール!awsでzabbix3.0Tadashi Mishima
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題tsudaa
 

Viewers also liked (20)

フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
フィーリングで読む40種類のアセンブラ(オープンソースカンファレンス2013 Tokyo/Spring ライトニングトーク)
 
Linux でavr開発環境を構築する+mbed(20100612koedo94)
Linux でavr開発環境を構築する+mbed(20100612koedo94)Linux でavr開発環境を構築する+mbed(20100612koedo94)
Linux でavr開発環境を構築する+mbed(20100612koedo94)
 
新しい生活をLinuxといっしょに始めよう!
新しい生活をLinuxといっしょに始めよう!新しい生活をLinuxといっしょに始めよう!
新しい生活をLinuxといっしょに始めよう!
 
文字コードとセキュリティ
文字コードとセキュリティ文字コードとセキュリティ
文字コードとセキュリティ
 
マイコンでマルチタスク
マイコンでマルチタスクマイコンでマルチタスク
マイコンでマルチタスク
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
独学道場アセンブリの会
独学道場アセンブリの会独学道場アセンブリの会
独学道場アセンブリの会
 
Cコンパイラの改造(未)
Cコンパイラの改造(未)Cコンパイラの改造(未)
Cコンパイラの改造(未)
 
Fontconfigことはじめ
FontconfigことはじめFontconfigことはじめ
Fontconfigことはじめ
 
文字コード基礎論A
文字コード基礎論A文字コード基礎論A
文字コード基礎論A
 
C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回C#でゲームを作る2016 第1回
C#でゲームを作る2016 第1回
 
Windows改造計画
Windows改造計画Windows改造計画
Windows改造計画
 
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
 
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
 
5分でインストール!awsでzabbix3.0
5分でインストール!awsでzabbix3.05分でインストール!awsでzabbix3.0
5分でインストール!awsでzabbix3.0
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題
 
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
よいコード、わるいコード
よいコード、わるいコードよいコード、わるいコード
よいコード、わるいコード
 

More from Masafumi Yokoyama

More from Masafumi Yokoyama (8)

Rabbit on Sinatra
Rabbit on SinatraRabbit on Sinatra
Rabbit on Sinatra
 
コマンドプロンプト Tips
コマンドプロンプト Tipsコマンドプロンプト Tips
コマンドプロンプト Tips
 
GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理GitHubで学ぶバージョン管理
GitHubで学ぶバージョン管理
 
百万件くらいのデータの扱い方
百万件くらいのデータの扱い方百万件くらいのデータの扱い方
百万件くらいのデータの扱い方
 
Rabbit2.0!!
Rabbit2.0!!Rabbit2.0!!
Rabbit2.0!!
 
My add Git
My add GitMy add Git
My add Git
 
日本語フォント・メイリオ
日本語フォント・メイリオ日本語フォント・メイリオ
日本語フォント・メイリオ
 
バージョン管理入門
バージョン管理入門バージョン管理入門
バージョン管理入門
 

文字コード略歴

  • 1. 文字コード略歴 よこやままさふみ 社内勉強会 2012/05/18 文字コード略歴 Powered by Rabbit 2.0.6
  • 2. 自己紹介 ✓ 横山昌史 ✓ 入社4年目 ✓ プログラマ etc... ✓ 所属プロジェクト ✓ Java、UNIX、雑用 etc... ✓ 文字コードの "るつぼ" 文字コード略歴 Powered by Rabbit 2.0.6
  • 3. Rabbitについて ✓ プレゼンテーションツール ✓ 実装: Ruby/GTK ✓ 動作: UNIX/Win/Mac ✓ 文章とデザインの分離 ✓ バージョン管理しやすい 文字コード略歴 Powered by Rabbit 2.0.6
  • 4. 文字コードとは ✓ 文字をコンピュータで扱うための 符号化方式 ✓ エンコード、キャラクターセットとも 呼ばれる 文字コード略歴 Powered by Rabbit 2.0.6
  • 5. 符号化 ✓ 文字や音声などを0と1のデジタ ルデータに変換すること ✓ 16進数で記述されることが多い ✓ Javaなどでは、頭に"0x"を付けると16 進数として扱われる 文字コード略歴 Powered by Rabbit 2.0.6
  • 6. よく使われる文字コード ✓ ASCII ✓ Shift_JIS ✓ UTF-8(Unicode) ✓ EBCDIC 文字コード略歴 Powered by Rabbit 2.0.6
  • 7. ASCII 文字コード略歴 Powered by Rabbit 2.0.6
  • 8. ASCII American Standard Code for Information Interchange 文字コード略歴 Powered by Rabbit 2.0.6
  • 9. ASCII ✓ 英語を表現するための文字コード ✓ 英字アルファベット、記号 ✓ いわゆる半角文字 文字コード略歴 Powered by Rabbit 2.0.6
  • 10. ASCII ✓ 1文字につき7ビットの1バイトコ ード 7 ✓ 7ビット = 2 = 128 ✓ 16進数で言うと0x00〜0x7Fまで ✓ 1バイト = 8ビットのため、1ビット余り 文字コード略歴 Powered by Rabbit 2.0.6
  • 11. ASCIIの例 ✓ Heisei 24 ✓ 48 65 69 73 65 69 20 32 34 ✓ 16進数(0xは省略) 文字コード略歴 Powered by Rabbit 2.0.6
  • 12. JIS X 0201 ✓ 日本工業規格 ✓ 一部の符号位置がASCIIと違う ✓ 半角カナが使える ✓ 8ビット目を拡張 文字コード略歴 Powered by Rabbit 2.0.6
  • 13. ASCIIと異なる文字 ✓ 符号位置0x5C ✓ ASCII:半角バックスラッシュ ✓ JISX0201:半角円記号 文字コード略歴 Powered by Rabbit 2.0.6
  • 14. ASCIIと異なる文字 ✓ 符号位置0x7E ✓ ASCII:半角チルダ ✓ JISX0201:半角オーバーライン 文字コード略歴 Powered by Rabbit 2.0.6
  • 15. ASCIIと異なる文字 ✓ ASCIIかJISX0201かは曖昧 ✓ 環境によって表示が変わる ✓ 日本のフォントは円記号 ✓ 外国のフォントはバックスラッシュ ✓ 7Eは日本でも大抵チルダ 文字コード略歴 Powered by Rabbit 2.0.6
  • 16. Shift_JIS 文字コード略歴 Powered by Rabbit 2.0.6
  • 17. Q&A ✓ Q.あなたの母語は何語ですか? ✓ A.日本語 ✓ Q.日本語は英字アルファベットだ けで表現できますか? ✓ A.いいえ 文字コード略歴 Powered by Rabbit 2.0.6
  • 18. ひらがなや漢字が必要 ✓ 常用漢字 2,136文字(2010年 改定) 8 ✓ 1バイト = 8ビット = 2 = 256 ✓ 1バイトでは表現できない 文字コード略歴 Powered by Rabbit 2.0.6
  • 19. 2バイトコード ✓ 1文字を2バイトで符号化 16 ✓ 2バイト = 16ビット = 2 = 65,536 文字コード略歴 Powered by Rabbit 2.0.6
  • 20. JIS X 0208 ✓ 日本工業規格 ✓ JIS第1・第2水準漢字を定義 ✓ 最新版では6,879文字を収録 ✓ 1983年に大幅な変更 ✓ 異字体の符号位置入れ替え ✓ 字形の変更 文字コード略歴 Powered by Rabbit 2.0.6
  • 21. JIS X 0213 ✓ 日本工業規格 ✓ JIS X 0208の拡張(後方互換) ✓ JIS第3・第4水準漢字を定義 ✓ 環境によってはJISX0213に対応 していない(JIS第3・第4水準漢字 が使えない) 文字コード略歴 Powered by Rabbit 2.0.6
  • 22. Shift_JISの成り立ち JIS X 0201 + JIS X 0208(JIS X 0213) 文字コード略歴 Powered by Rabbit 2.0.6
  • 23. Shift_JISの特徴 ✓ 日本語が表現できる ✓ 半角カナが使える ✓ JISX0201との互換性 文字コード略歴 Powered by Rabbit 2.0.6
  • 24. Shift_JISの例 ✓ 平成 24 ✓ 95 BD 90 AC 20 32 34 文字コード略歴 Powered by Rabbit 2.0.6
  • 25. Shift_JISの欠点 ✓ 全角半角問題 ✓ 「A」と「A」、「ア」と「ア」など ✓ 全角文字を扱える文字コード共通の問 題 ✓ JISX0201の副作用 ✓ だめ文字 文字コード略歴 Powered by Rabbit 2.0.6
  • 26. Shift_JISの派生 ✓ WindowsではShift_JISを拡張し た文字コードが使われている ✓ Windows31-JやMS932やCP932な どと呼ばれる ✓ 重複符号化(㈱問題) ✓ 同じ文字に複数の符号位置 文字コード略歴 Powered by Rabbit 2.0.6
  • 27. UTF-8 文字コード略歴 Powered by Rabbit 2.0.6
  • 28. Q&A ✓ Q.今はどんな時代ですか? ✓ A.国際化時代 ✓ Q.Shift_JISの欠点はどこですか? ✓ A.日本語しか扱えない 文字コード略歴 Powered by Rabbit 2.0.6
  • 29. Unicode ✓ 世界中の言語を表現できる文字 コードの仕様がUnicode ✓ 110,181文字(2012年1月) 文字コード略歴 Powered by Rabbit 2.0.6
  • 30. Unicode ✓ Unicodeの実装の一つがUTF-8 ✓ 他にもUTF-16など 文字コード略歴 Powered by Rabbit 2.0.6
  • 31. UTF-8の特徴 ✓ ASCIIを拡張 ✓ Shift_JISとは違い、JISX0201の拡張 ではない ✓ 半角カナなどの符号位置がShift_JISと 違う ✓ だめ文字がない 文字コード略歴 Powered by Rabbit 2.0.6
  • 32. 1文字のバイト数 ✓ ASCII ✓ 全て半角文字 = 全て1バイト ✓ Shift_JIS ✓ 半角 = 1バイト ✓ 全角 = 2バイト 文字コード略歴 Powered by Rabbit 2.0.6
  • 33. 1文字のバイト数 ✓ UTF-8 ✓ 半角 = 主に1バイト ✓ 全角 = 日本語は3バイト ✓ 記号は3バイトか2バイト 文字コード略歴 Powered by Rabbit 2.0.6
  • 34. UTF-8の例 ✓ 平成 24 ✓ E5 89 B3 E6 88 90 20 32 34 文字コード略歴 Powered by Rabbit 2.0.6
  • 35. 1バイトでない半角文字 ✓ (半角)が2種類 ✓ 5C (ASCII): 規格上はバックスラッシュ ✓ C2 A5 (UTF-8): 規格上は円記号 ✓ 2バイトの半角文字 文字コード略歴 Powered by Rabbit 2.0.6
  • 36. 1バイトでない半角文字 ✓ ~(半角)も2種類 ✓ 7E (ASCII): 規格上はチルダ ✓ E2 80 BE (UTF-8): 規格上はオーバ ーライン ✓ 3バイトの半角文字 文字コード略歴 Powered by Rabbit 2.0.6
  • 37. 半角カナ ✓ ア (半角) ✓ B1 (Shift_JIS) ✓ EF BD B1 (UTF-8) ✓ UTF-8の半角カナは全て3バイト ✓ 単純なバイト数チェックでは、半角 か全角か判別できない 文字コード略歴 Powered by Rabbit 2.0.6
  • 38. IBM版とMS版 ✓ IBM-Unicode(一般的な Unicode)とMS-Unicode(マイ クロソフト版Unicode)で符号位 置が異なる文字がある ✓ いわゆる波ダッシュ問題の要因 文字コード略歴 Powered by Rabbit 2.0.6
  • 39. 波ダッシュ問題 ✓ Windowsとそれ以外のOS間で の通信時などに文字化け ✓ 対象文字は10文字程度(環境に よる) ✓〜 — - ‖ ∥ ¦ ¬ ¢ £ 文字コード略歴 Powered by Rabbit 2.0.6
  • 40. EBCDIC 文字コード略歴 Powered by Rabbit 2.0.6
  • 41. EBCDIC ✓ IBMによって定義された文字コー ド ✓ IBM製のメインフレーム(汎用機)など で現在も使用されている 文字コード略歴 Powered by Rabbit 2.0.6
  • 42. EBCDIC ✓ 半角文字の符号位置がASCIIと 異なる ✓ 全角文字の表現方法がShift_JIS やUTF-8と異なる ✓ 基本的にJIS第3・第4水準は含ま れない 文字コード略歴 Powered by Rabbit 2.0.6
  • 43. 半角文字 ✓ すべて1バイト ✓ 8ビット目まで使用 ✓ 制御文字エリアが大きい ✓ 0x00〜0x3Fと0xFF ✓ 汎用機で使用される特殊な制御文字 が含まれている 文字コード略歴 Powered by Rabbit 2.0.6
  • 44. 全角文字 ✓ 半角文字との区別は制御文字で 行う ✓ 全角の開始位置がシフトアウト(0x0E) ✓ 全角の終了位置がシフトイン(0x0F) ✓ 略してSO/SIなどと呼ばれる 文字コード略歴 Powered by Rabbit 2.0.6
  • 45. SO/SI ✓ 平成 24 ✓ 0E 45 8D 45 BA 0F 40 F2 F4 文字コード略歴 Powered by Rabbit 2.0.6
  • 46. うわっ… ✓ SIの欠如 ✓ 0E 45 8D 45 BA ✓ SO/SIのネスト ✓ 0E 45 8D 0E 45 BA 0F 0F ✓ SO/SIを対として扱うのではなく、 モード切替文字として扱うことで 対応 文字コード略歴 Powered by Rabbit 2.0.6
  • 47. まとめ 文字コード略歴 Powered by Rabbit 2.0.6
  • 48. 参考 ✓ プログラマのための文字コード技 術入門 ✓ 正規表現クックブック(66ページ) ✓ AIX 5L 日本語コード一覧表 ✓ jp_codebookで検索 ご静聴ありがとうございました。 文字コード略歴 Powered by Rabbit 2.0.6