Perl文字コード関連のメモ

  • 「まるごとPerl」に書いてある「まるごとEncode」から開始
    • Perlは内部的な文字コードUTF-8で処理している
    • ASCIIと上位互換なのはUTF-8(自分で具体的に説明して、と言われるとワカリマセン)
    • UTF-8では1文字につき3オクテット(バイト)
    • utf8プラグマとbetesプラグマ
    • Encode::decode()は「バイト列を文字列に変換する」
    • Encode::encode()は「文字列をバイト列に変換する」
    • 図1の矢印は逆?
    • encodeは「暗号化する・符号化する」といった意味
    • decodeは「解読する・復号する」といった意味
  • perlunitutを読む(日本語)
    • 文字の序数(The ordinal value of a character)はコードポイントと呼ばれます。
    • Text strings (character strings)
      • テキスト文字列、または 文字の文字列 は文字からなります。バイト列はここでは無意味で、エンコーディングがあります。各文字は単に文字です。
    • Binary strings (byte strings)
      • バイナリ文字列、または バイト文字列 はバイト列からなります。ここでは、文字はなく、単にバイトだけがあります。外側の世界(現在の Perl プロセスの外側のあらゆるもの) との通信はバイナリで行われます。
    • Encoding
    • Decoding
      • デコードはバイナリからテキストへの変換です。
  • perlunifaqを読む(日本語)
    • What is a "wide character"?
      • これは文脈に依存して、127より大きい序数を持つ文字、255より大きい序数を持つ文字、1バイトで収まらない文字、のいずれかの意味で使われる用語です。(序数は「ordinal value」の訳のようだ。chr関数とord関数が何の略なのかがようやくわかりました。)
    • What about the use bytes pragma?
      • テキスト文字列をバイト単位で扱うためのプラグマ

#!/usr/bin/perl
use strict;
use warnings;
use utf8; #このファイルはutf-8で作成

binmode STDOUT, ":utf8";
print ord("い"),"\n";
print chr(12356),"\n";
print chr(0x3044),"\n";

  • perluniintroを読む(日本語)
    • 0x00FF を超える文字があれば、"Wide character" の警告が出されます。
      • perl -e 'print "\x{0100}\n"' (これは警告が出る)
      • perl -e 'print "\x{00ff}\n"' (これは警告が出ない)
  • perlunicodeを読む(日本語)




まるごとPerl! Vol.1
まるごとPerl! Vol.1
posted with amazlet at 09.08.11
小飼 弾 宮川 達彦 伊藤 直也 川合 孝典 水野 貴明
インプレスコミュニケーションズ
売り上げランキング: 181053
おすすめ度の平均: 5.0
5 技術書・解説書というよりはマイルストーン

名称 意味(Wikipediaより引用)
上位互換 (機能・性能・グレードが)上位の製品が、下位の製品の機能も持つことである。ex)Adobe Photoshop CS(上位製品)はAdobe Photoshop Elements(下位製品)で作成したデータを読み込める。
下位互換 先発する製品仕様に対して後発の製品が一定の互換性を提供しているために、下位製品でも使用可能である事。一般に後発製品は先発製品よりも技術的に優れていることが多い為、下位製品では新たに付加された機能を利用できない場合が多い。関連語としては上位互換がある。
前方互換 新しいシステム向けのデータなどが古いシステムでも使用できること。ex)「白黒テレビでカラーテレビ放送が受信できる。」
後方互換 新たに作られる工業製品の機能に、旧世代での古い機能を満たすように考慮され仕様に含まれることである。逆の概念に前方互換がある。ex)ゲームボーイ(1989年発売開始)、ゲームボーイカラー(1998年発売開始)、ゲームボーイアドバンス(2001年発売開始)は、それぞれ後発の機種で先発の機種用のソフトウェアを使用できる。