[解決済み】ユニコード1文字には何バイトかかりますか?
質問
エンコーディングについて少し混乱しています。私の知る限り、古いASCII文字は1文字に1バイトかかります。Unicodeの文字は何バイト必要なのでしょうか?
1つのユニコード文字に、あらゆる言語のあらゆる可能な文字を含めることができると思いますが、正しいですか?では、1文字あたり何バイト必要なのでしょうか?
また、UTF-7、UTF-6、UTF-16などは何を意味しているのでしょうか。これらはUnicodeの異なるバージョンなのでしょうか?
を読みました。 ウィキペディアのユニコードに関する記事 が、私にはかなり難しいです。簡単な答えを期待しています。
どのように解決するのですか?
簡単な答えがないのです。
まず、Unicodeは、確かに努力はしていますが、すべての言語のすべての文字が含まれているわけではありません。
ユニコード自体はマッピングであり、コードポイントを定義し、コードポイントは番号であり、その番号に関連付けられた
通常
文字です。通常と言ったのは、文字を組み合わせるという概念があるからです。アクセントやウムラウトのようなものに馴染みがあるかもしれません。これらは他の文字と一緒に使うことができ、例えば
a
または
u
で新しい論理文字を作成します。したがって、1つの文字は1つ以上のコードポイントから構成されることがあります。
計算機システムで利用するためには、この情報をどのように表現するかを選択する必要があります。それが、utf-8、utf-16le、utf-32などのさまざまなunicodeエンコーディングです。これらは、主にコードユニットの大きさで区別されます。UTF-32は最も単純なエンコーディングで、コードユニットが32ビットであり、個々のコードポイントがコードユニットに無理なく収まることを意味します。他のエンコーディングでは、あるコードポイントが複数のコードユニットを必要としたり、あるコードポイントがそのエンコーディングではまったく表現できなかったりします(これはたとえばUCS-2の問題です)。
文字の組み合わせは自由なので、あるエンコーディングの中でも、文字や正規化形式によって1文字あたりのバイト数が異なることがあります。これは、複数の表現を持つ文字を扱うためのプロトコルです(以下のように言えます)。
"an 'a' with an accent"
これは2つのコードポイントであり、そのうちの1つはコンバイニングチャーまたは
"accented 'a'"
は1つのコードポイントである)。
関連
-
[解決済み] 文字列を連結する方法を教えてください。
-
[解決済み] Luaで文字列がnilまたは空でないかをチェックする
-
[解決済み] LC-3アセンブリ言語で文字列を印刷する (super noob)
-
[解決済み] UTF-32とUCS-4の違いは何ですか?
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み】シェルスクリプト - 変数から最初と最後の引用符 (") を削除します。
-
[解決済み】「改行」と「キャリッジリターン」の違いは?
-
[解決済み] sqliteでパディングを含む文字列を連結する方法
-
[解決済み】Swift Stringで文字のインデックスを検索する
-
[解決済み】2つの部分文字列の間にある文字列を検索する【重複あり
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン