UCSとCSI

こんにちは!kossyです!




さて、今回はプログラミングにおけるテキストデータ取り扱い時の用語であるUCSとCSIについて、
ブログに残してみたいと思います。



UCS方式

UCSはUniversal Character Setの略で、日本語にすると汎用文字集合という意味になります。
入出力時にプログラミング言語がテキストデータをUCSに変換し、内部ではテキストデータを統一的に扱う方式です。

利点

  • 仕組みがシンプルで実装が容易であ
  • 変換以外は処理コストが低い
  • 利用実績が多い

欠点

  • 不要な変換が発生することがある
  • 変換に曖昧な部分が残る
  • 外字・機種依存文字などの問題がある
  • UCSに含まれない文字は絶対に扱えない

CSI方式

CSIはCharacter Set Independentの略で、文字集合独立と訳すことができます。
各種文字集合と符号化方式を変換せずにそのまま扱う方式で、UCS方式が内部的には1種類の文字符号化方式を処理するのに対して、CSI方式は各種符号化方式をそのまま扱います。
CSI方式は複数の符号化方式を扱えるため、UCS方式のスーパーセット(上位集合)になります。
ちなみに、RubyCSI方式を採用している言語で、非常に稀有な存在になっています。
Rubyの作者のまつもとゆきひろさんは、主要な言語でUCS方式が採用され、
CSI方式があまり採用されない現状に、
「将来ロストテクノロジーになってしまいそう」と残念がっておられました。
RubyではなぜUCS正規化を採用していないのでしょうか? - Quora

利点

  • 無駄な変換が発生しない
  • 変換に由来する問題が発生しない
  • 外字などの問題が発生しにくい(発生しないように対処可能)
  • 原理的に扱えない文字がない
  • 必要に応じてアプリケーション独自の文字集合を扱うことも可能

欠点

  • 文字列処理が複雑化しがち
  • 処理性能が低くなると予想できる
  • 実績が少ない



参考にさせていただいた書籍・サイト

https://tatsu-zine.com/books/codenosekai