タグ

ブックマーク / ja.stackoverflow.com (2)

  • utf8mb4は誰がどこで決めた仕様?

    全般的におかしいので指摘を残しておきます Unicode には BMP (Basic Multilingual Plane) という概念があって https://ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E5%A4%9A%E8%A8%80%E8%AA%9E%E9%9D%A2 これは UNICODE 3.0 までで追加された「よく使うであろう」文字のセットのことで BMPは「文字のセット」ではありません。Basic Multilingual Planeという言葉の通り、面すなわち領域のことです。 BMPへの追加は今でも行われており、Unicode3.0までがBMP、それ以降が追加面、という区別の仕方は誤りです。 BMP にある文字は UTF-8 エンコーディングでは 3byte となります。 BMP 外の文字は UTF-8 エンコーディングで 4byt

    utf8mb4は誰がどこで決めた仕様?
    nogoro
    nogoro 2021/07/01
    utf8より新たなutf8mb4の方が真のUTF-8と言える? BMP(Basic Multilingual Plane)は3Byteで,絵文字なども含む4Byteはutf8mb4でないと扱えない。UTF-16のサロゲートペアの話題も。
  • PHP 'foreach' の内部挙動について

    注:この答えは PHP のzval コンテナについての知識があることを前提としています。特に is_ref や refcount が何者かを知っている必要があります。 それらについては、PHP マニュアルも参照してください。 foreach は配列やプレーンなオブジェクト、Traversable オブジェクトで行えますが、ここでは特別に記述がない場合は配列を foreach する際についての説明をします。 まず、配列の foreach の挙動について理解する上で重要となる、配列とそのイテレーションについての内部挙動を説明します。 配列イテレーションの内部挙動 PHP の配列は HashTable により管理されており、また、foreach はそれに基づいて配列を走査します。 PHP は内部的に配列を行き来するための2つのメカニズムを持っています。 1つ目は、内部配列ポインタです。このポイン

    PHP 'foreach' の内部挙動について
    nogoro
    nogoro 2020/02/18
    foreachの中(&後)で元の配列をcurrent()なりkey()なりで呼ぶと常に2番目を返す。それはPHPの言語仕様で配列をコピーするから。
  • 1