タグ

ブックマーク / qiita.com/masakielastic (4)

  • PHP のマルチバイト関数標準化のための取り組み - Qiita

    PHP のマルチバイト関数の標準化について PHP Internals に質問および提案するために、調査したことおよび自分の意見をまとめました。 概要 このドキュメントでは標準関数の strlen、substr、chr、ord のマルチバイトの文字エンコーディング対応もしくはこれらに相当する新しい標準関数の導入について検討します。 取り組む目的は CMS、フレームワーク開発のための必要最小限の関数を提供することで、mbstring、iconv、intl への依存度を下げるもしくはこれらのモジュールのポリフィルライブラリが UTF-8 以外のより多くのマルチバイトの文字エンコーディングに対応できるようにすることです。 標準のマルチバイト関数が存在しないことの課題 mbstring、iconv、intl がインストールされていない環境のために主要な CMS やフレームワークは独自のマルチバイト

    PHP のマルチバイト関数標準化のための取り組み - Qiita
  • $_GET と $_POST は不適切な名前である - Qiita

    $_GET は名前だけでは HTTP GET メッセージをあらわすものとして考えてしまいがちですが、実際には URI クエリパラメーターであり、GET リクエスト以外にも使うことができます。 $_POST はリクエストボディをあらわしますが、Content-Type ヘッダーの値が x-www-form-urlencoded もしくは multipart/form-data であるときにかぎられます。たとえば Content-Type ヘッダーの値が application/json である場合には読み込み専用のストリーム (php://input) を利用する必要があります。 apfd (Always Populate Form Data) エクステンションを導入すれば、HTTP メッセージの Content-Type の値が multipart/form-data もしくは appli

    $_GET と $_POST は不適切な名前である - Qiita
  • 不正なバイト列を考慮して UTF-8 の文字列から1文字ずつ取り出す

    ライブラリやプログラミング言語で UTF-8 の文字列関数を実装する場合、不正なバイト列に遭遇しても、処理を続けることが求められます。 最小限必要な関数は次の文字のバイト数を返す関数です。 C 言語の標準関数であれば mblen や mbtowc などが挙げられますが、これらの関数は不正なバイト列に遭遇すると、負の値を返すため、処理を止めるか、不正なバイト列よりも後ろの箇所を切り捨てざるを得なくなります。 不正なバイト列のサイズの計算方法は Unicode Standard に記載されています。 バイト列の範囲表 Unicode Standard 7.0 の3章に次のような表が記載されています (Table 3-7. Well-Formed UTF-8 Byte Sequences)。 コードポイント 1番目のバイト 2番目のバイト 3番目のバイト 4番目のバイト U+0000 - U+0

    不正なバイト列を考慮して UTF-8 の文字列から1文字ずつ取り出す
  • ICU を使って UTF-8 の文字列から1文字ずつ取り出す - Qiita

    書記素クラスターを扱う必要がある場合、BreakIterator を使う必要があります。こちらの記事をご参照ください。 ビルドオプション #include <stdio.h> #include <string.h> #include <unicode/utf8.h> void print_each_char(const char*, size_t); int main(void) { const char* str = "?野家"; size_t size = strlen(str); print_each_char(str, size); } void print_each_char(const char* str, size_t size) { int32_t previous; int32_t current = 0; int32_t buf_size = 0; int32_t* s

    ICU を使って UTF-8 の文字列から1文字ずつ取り出す - Qiita
    kenjiro_n
    kenjiro_n 2020/10/26
    ICU id:entry:56996758 の具体的な使い方がわからなかったがこれでどうにかなりそう。
  • 1