web-dev-qa-db-ja.com

Javaが内部文字列表現にUTF-16を使用するのはなぜですか?

理由は、インデックスの文字へのアクセスのように配列が高速であった理由だと思いますが、一部の文字は16ビットに収まらないため、機能しません...

とにかく特別なケースを処理する必要がある場合は、UTF-8を使用しないのはなぜですか?

29
mrpyo

以前は CS-2 でしたが、これは素敵な固定長16ビットでした。もちろん、16ビットでは十分ではありません。彼らはさらにUTF-16を改造しました。

47
DeadMG

主要な部分については、単純明快な将来の保証のためです。それが見当違いの理由であったのか、それを行うのに間違った方法であったのかは、別の問題です。

このドキュメントの2004年のJava 5およびUTF-16への切り替えについてのいくつかの設計決定の背後にあるいくつかの理由を確認できます。これは、いくつかの欠点も説明しています:Java Platformの補足文字、およびJavaエコシステムがスタック全体で異なるエンコーディングを使用するのはなぜですか?.

UTF-16を使用する際の落とし穴の詳細と、UTF-8が一般により優れたオプションである理由については、TF-16は有害であると考えるべきですか?およびTF-8 Everywhereマニフェスト。

14
haylem