タグ

文字コードに関するrryuのブックマーク (62)

  • 絵文字を支える技術について|nona

    はじめにこちらはmhidakaが建立したAdvent Calendar Day.3となります。 こんにちは、はじめまして、のなと申します。mhidakaさんのTweetを見つけて、初めてAdvent Calendarなるものを書いています。なにかお作法間違っていたら大目に見てください、よろしくお願いします。 軽く自己紹介をさせていただくと、普段はGoogleAndroidTextまわりの開発を行っており、DroidKaigiやShibuya APKで発表させていただいたりしています。最近はほぼ絵文字の話しかしてないので、絵文字おじさんと思われてそうですが、普段の仕事絵文字に限らず、Androidの文字表示の部分は大抵面倒をみています。 今回この機会をいただいたので、どんな内容を書こうか迷ったのですが、やはり皆が読んで面白い内容というと、絵文字になるのかなぁ、ということで性懲りもなく絵

    絵文字を支える技術について|nona
    rryu
    rryu 2023/12/05
    大抵の文字数制限の源はストレージサイズなのだが、絵文字が入ると見た目の文字数とコードポイント数の乖離がすごいので色々とつらい。
  • 全ての開発者が知っておくべきUnicodeについての最低限の知識

    2003年には「プレーンテキストなんてものは全く存在しない」と言われ、テキストの解読には文字コードの情報が必須となっていました。しかし、2023年になるまでの20年の間に絵文字などのおかげでUnicodeの利用率は98%へと到達し、再び文字コードを気にせずにすむ時代がやってきています。そんな時代において、正しくUnicodeを使うために必要な知識をエンジニアのニキータ・プロコポフさんが解説しています。 The Absolute Minimum Every Software Developer Must Know About Unicode in 2023 (Still No Excuses!) @ tonsky.me https://tonsky.me/blog/unicode/ Unicodeの歴史と利用率の推移をまとめたグラフは下図の通り。2000年代後半から急速に普及が進んでいったこ

    全ての開発者が知っておくべきUnicodeについての最低限の知識
    rryu
    rryu 2023/10/05
    最大のコードポイントが0x10FFFFなのはUTF-8で4バイトに収まる範囲に縮小したからなのだが、それでもまだ十分空きがあるのでUCS-4のやりすぎ感がすごい…
  • アイヌ語仮名「ㇷ゚」に対する正規表現の罠

    導入 アイヌ語は日語と異なり、閉音節(子音で終わる音節)も存在するので、表記の際音素文字であるラテン文字なら、そのまま p, t, k, m, n, s, r などの子音文字を後ろの付ければ良いわけなので、アイヌ語ローマ字表記では、何も問題が生じない。しかし、元々開音節言語である日語に特化したカタカナのような仮名文字で表記する際、鼻音 n は「ン」でなんとかなる(実はそれでもまずい事になっているけどここでは割愛する)が、p, t, k, m, n, s, r, h はどうしようもないので、特殊の捨て仮名(小書き仮名文字)を利用することになっている。 具体的には以下のような特殊仮名文字(通称 アイヌ語仮名)である。 ㇷ゚ -p ッ -t ㇰ -k ㇺ -m ㇱ -s ㇻ -(a)r, ㇼ -(i)r, ㇽ -(u)r, ㇾ -(e)r, ㇿ -(o)r お分かり頂けただろうか… 問題 r

    アイヌ語仮名「ㇷ゚」に対する正規表現の罠
    rryu
    rryu 2023/09/01
    U+309AのScriptプロパティは「inherited」で、直前の基本文字のScriptプロパティを継承するのでそれをちゃんと実装しているかによるのだと思う。
  • 「HTMLでは環境依存文字(①や©など)を文字参照にしなければいけない」という誤解と、本当に置換すべき文字

    HTMLファイルで特殊記号を使う際、① は ①、© は © のように置き換えて書かないといけないものだと思いこんでいないでしょうか。 現代ではそれは誤解です。 UTF-8では特殊記号の文字参照は不要 そもそも環境依存文字とは、データを扱う機種・ソフトウェアなどの違い(文字コードの割り当ての違い)により表示に違いが出てしまう文字のことでした。 例えばShift_JISには © が含まれておらずそもそも保存できなかったり、 ① などの丸数字は含まれているものの、WindowsMac OS(当時)の割り当ての違いにより正しく表示できなかったりしました。[1] しかし現在ではUnicodeによって文字コードは統一化されており、その問題はほとんど起きなくなっています。 近年では多くの場合 UTF-8 でファイルを記述すると思います。 HTMLファイルの文字エンコーディングが

    「HTMLでは環境依存文字(①や©など)を文字参照にしなければいけない」という誤解と、本当に置換すべき文字
    rryu
    rryu 2022/10/22
    いまだに丸囲み数字を機種依存文字だと思っている人は、Unicodeでは⓪から㊿まであることをきっと知らない。
  • 端末の文字幅問題の傾向と対策 | IIJ Engineers Blog

    電子メール、ネットワーク機器集中管理、異常検知、分散処理、クラウド基盤などのシステム開発に従事。古代Rubyist。 CLI や TUI なアプリケーションを使っていると、端末の画面が崩れてしまうことがよくあります。 たとえば、こんな TUI が、 環境によってはこんな感じで崩れます。 スクロールなどをしながらしばらく使っているとさらにどんどん崩れていきます。 こうなってしまった場合、とりあえず Ctrl-l で画面を再描画することで、大抵はなんとか読める程度にリセットできますので、ことあるごとに Ctrl-l を連打することになります。 ですが、どうしようもないケースもままあります。 例えば、私の場合は以下のようなシチュエーションで困ります。 w3m でテーブルなどを表示するとレンダリングが崩れる less でログの閲覧の際に表示されるべき文字が表示されず見落としが発生する Wander

    端末の文字幅問題の傾向と対策 | IIJ Engineers Blog
    rryu
    rryu 2022/02/17
    もう曖昧な文字幅のやつは半角扱いするのをデフォルトにしたほうが幸せになれそうな気がする。
  • PDFをコピペするとなぜ“文字化け”が起きてしまうのか 変換テーブル“ToUnicode CMap”が原因だった

    NTT Tech Conferenceは、NTTグループのエンジニアたちが一堂に会し、NTTグループ内外のエンジニアたちと技術交流を行うためのカンファレンスです。ここで、細田氏が「PDFのコピペが文字化けするのはなぜか?〜CID/GIDと原ノ味フォント〜」をテーマに話します。まずは文字化けが起こってしまう原因について。 原ノ味フォントの作成者 細田真道氏(以下、細田):細田です。ふだんはNTTグループのどこかでDX仕事をしていますが、今日はぜんぜん仕事とは関係なく、個人的にやっているオープンソースなどの話をしたいと思います。よろしくお願いします。 簡単に自己紹介をします。楽譜を作成するプログラム「LilyPond」のコミッターと、GNUの公式文書フォーマット「Texinfo」のコミッターをしています。あとで話しますが、「原ノ味フォント」を作っていて、すごく似たような名前で「原ノ町」という

    PDFをコピペするとなぜ“文字化け”が起きてしまうのか 変換テーブル“ToUnicode CMap”が原因だった
    rryu
    rryu 2021/05/29
    グリフから文字コードへの逆変換なので部首漢字などの同一のグリフが割り当てられている文字が化ける可能性があると。
  • 「ASCIIをUTF-8にして」それが『できない』ことを理解してもらえなかった話 - Qiita

    物語の始まり 事の発端は納品後。 先方からメッセージが届きました。 クライアント様「このファイルの文字コードがShift_JISになっておりますので、UTF-8で再納品をお願いいたします。」 拙者(あれ…UTF-8にしてたと思うんだけどな) 拙者「確認いたします。」 文字コードを確認する 案件はいわゆる更新案件で、今回の納品時に言われていたのは、「文字コードがUTF-8ではないものは変換して納品してくれ」ということ。 そして、ご指摘いただいたのは、今回の更新案件で中身はいじらなかったJavaScriptファイル。 来ならば納品するファイルではないのですが、文字コード変換という要件があったため、納品ファイルとして加えられたものでした。 一括で文字コードを変えたので作業漏れかなぁと思っていました。 ファイルの中身は記事用にかなり適当につくったものですが、まあだいたいこんな感じです。

    「ASCIIをUTF-8にして」それが『できない』ことを理解してもらえなかった話 - Qiita
    rryu
    rryu 2021/04/04
    ASCII互換の文字コードとはそういうものなのだが、それがシフトJISとして解釈される方法はなかなか年代物な感じがする。IEで開いて文字コードを確認するとかだろうか。
  • 漢字のようで漢字でないUnicodeの「康熙部首」と「CJK部首補助」|TechRacho by BPS株式会社

    きっかけ 以下のツイートで「埼玉埼⽟問題」と康煕部首を知りました。 「埼玉」と「埼⽟」の話。unicodedata.normalize('NFKC', '「埼玉」と「埼⽟」') でいけそう https://t.co/kte0sxDvZT — Haruhiko Okumura (@h_okumura) July 11, 2020 康煕部首とは ⼀⼁⼂⼃⼄⼅⼆⼇⼈⼉⼊⼋⼌⼍⼎⼏⼐⼑⼒⼓⼔⼕⼖⼗⼘⼙⼚⼛⼜⼝⼞⼟⼠⼡⼢⼣⼤⼥⼦⼧⼨⼩⼪⼫⼬⼭⼮⼯⼰⼱⼲⼳⼴⼵⼶⼷⼸⼹⼺⼻⼼⼽⼾⼿⽀⽁⽂⽃⽄⽅⽆⽇⽈⽉⽊⽋⽌⽍⽎⽏⽐⽑⽒⽓⽔⽕⽖⽗⽘⽙⽚⽛⽜⽝⽞⽟⽠⽡⽢⽣⽤⽥⽦⽧⽨⽩⽪⽫⽬⽭⽮⽯⽰⽱⽲⽳⽴⽵⽶⽷⽸⽹⽺⽻⽼⽽⽾⽿⾀⾁⾂⾃⾄⾅⾆⾇⾈⾉⾊⾋⾌⾍⾎⾏⾐⾑⾒⾓⾔⾕⾖⾗⾘⾙⾚⾛⾜⾝⾞⾟⾠⾡⾢⾣⾤⾥⾦⾧⾨⾩⾪⾫⾬⾭⾮⾯⾰⾱⾲⾳⾴⾵⾶⾷⾸⾹⾺⾻⾼⾽⾾⾿⿀⿁⿂⿃⿄⿅⿆⿇⿈⿉⿊⿋⿌⿍⿎⿏⿐⿑⿒⿓⿔⿕ KangXi Radica

    漢字のようで漢字でないUnicodeの「康熙部首」と「CJK部首補助」|TechRacho by BPS株式会社
    rryu
    rryu 2020/10/08
    普通にかな漢字変換しただけでは入力できないと思うのだが、どうやって入力しているのか気になる。OCRもわざわざ部首の方に変換しないはず。
  • SJIS-macに変換したはずなのにSJIS-winになる - Qiita

    $utf8Str = "❶❷❸❹❺"; $sjisStr = mb_convert_encoding($utf8Str, 'SJIS-mac'); echo(mb_detect_encoding($sjisStr, ['UTF-8','SJIS-mac', 'SJIS-win', 'SJIS'])); // SJIS-win ← SJIS-macに変換したはずなのに、何故かSJIS-winと判定されてしまいます。 そもそもSJIS-macってなんだよって話ですが、単にMacJapaneseのエイリアスです。 従ってMacJapaneseと書いても同じく、正しく誤判定されます。 そしてコメント欄にThis is a bug in PHP's mbstring extension『mbstringエクステンションのバグじゃよ』という人が現れています。 間違ったコードを書いたときに自分のせいでは

    SJIS-macに変換したはずなのにSJIS-winになる - Qiita
    rryu
    rryu 2020/09/29
    文字列によってはそうなると思ったら、丸付き数字の文字コードはSJIS-winとSJIS-macで異なるのになぜかSJISでもなくSJIS-winと判定されるというバグなのか。
  • Unicode 13.0 で新しく収録された日本語の漢字|Colorless Green Ideas

    2020年3月にリリースされた Unicode 13.0 では、「日で最も画数が多い字」とも呼ばれる「たいと」という漢字と宮沢賢治の詩の中に出てくる「鏡」を4つ組み合わせた漢字が収録された。また、Unicode 13.0 における部首の例示フォント変更についても触れる。 はじめに Unicode は世界の様々な文字をコンピュータ上で統一的に扱うための国際規格である [1] 。Unicode には毎年のように新しい文字が追加されており、2020年3月にリリースされた Unicode 13.0 では 5,930字が追加されている [2] 。 Unicode 13.0 での漢字の追加 Unicode 13.0 で追加された文字の大半は漢字である。Unicode 13.0 では、漢字 [3] を追加するためにCJK統合漢字拡張G (CJK Unified Ideographs Extension

    Unicode 13.0 で新しく収録された日本語の漢字|Colorless Green Ideas
  • 外字を使うのはやめてくれ! Unicodeへの移行を呼びかけるMicrosoftの公式ブログ記事が話題に/今や「メモ帳」でさえテキストファイルをUnicodeで保存する時代! Shift_JISはやめよう【やじうまの杜】

    外字を使うのはやめてくれ! Unicodeへの移行を呼びかけるMicrosoftの公式ブログ記事が話題に/今や「メモ帳」でさえテキストファイルをUnicodeで保存する時代! Shift_JISはやめよう【やじうまの杜】
    rryu
    rryu 2020/03/04
    要約するともうレガシーな外字エディタで頑張らないでUnicodeの異体字セレクタとかを使うようにしてって感じだと思う。
  • trimやstripが全角スペースをトリミングしない理由で盛り上がったのでまとめてみた - Qiita

    はじめに RubyのString#stripが全角スペースをトリミングしてくれないことにこの間初めて気づきました。 そこでフィヨルドブートキャンプのSlackで質問してみたところ、結構盛り上がったので記事にまとめます。 編 自分で調べたこと まず自力で調査したことをまとめます。 Javaのtrimメソッド Javaのtrimのロジックは「\u0020(半角スペース)の文字コードより大きいか小さいか」が判断基準になっています。 ただ、それが他の言語の場合同様のロジックで実装されているのかまではわかりませんでした。 RubyのString#strip(Cのコード) 前後のオフセット値を算出してそれを利用して前後のスペースのトリミングを実現しています。 ただ、C力が圧倒的に足りないのでどういうロジックでそのオフセット値を算出しているかまではわかりませんでした。 追記 RubyRuby実装、R

    trimやstripが全角スペースをトリミングしない理由で盛り上がったのでまとめてみた - Qiita
    rryu
    rryu 2019/06/20
    文字コードごとに独自のスペース文字がある可能性があり、標準でそれに対応するのはオーバースペック過ぎるのだと思う。Unicodeのスペース類も割とカオスだし…
  • ゆうちょPayアプリで「佐々木」姓が認識されず、アカウント登録できないと話題に 現在は修正済み

    ゆうちょ銀行のモバイル決済サービス「ゆうちょPay」で、「『佐々木』姓がアカウント登録できない」と話題になった。現在は修正済み。 ゆうちょ銀行が5月8日に開始したモバイル決済サービス「ゆうちょPay」だが、「『佐々木』姓がアカウント登録できない」と、8日夜からTwitterなどで話題になった。ゆうちょ銀行は9日午後1時に、修正版を配信した。 【修正:2019年5月9日午後3時 第1段落の文言の一部を変更しました】 ゆうちょPayのスマートフォンアプリは、初回利用時にアカウント登録をする必要がある。アカウント登録はメールアドレスを入力した後に氏名やパスワード入力に進むのだが、9日11時に試したところ、Android版アプリで氏名の登録時に「佐々木」を入力すると、「ひらがな、カタカナ、漢字、アルファベットのみ入力してください」というエラーが出てしまい、先に進めなかった。 名字を削ってみると、「

    ゆうちょPayアプリで「佐々木」姓が認識されず、アカウント登録できないと話題に 現在は修正済み
    rryu
    rryu 2019/05/09
    「々」は漢字じゃない罠にはまってしまったのか。「ー」はカタカナじゃない罠もよくはまるやつ。
  • モンゴル文字とUnicode - にせねこメモ

    調べたのでまとめる。 モンゴル文字は主にモンゴル語を表記するための文字であり、中国内の内モンゴル自治区で使われる。一方でモンゴル国内では一般にキリル文字表記が使われている。 ここではモンゴル語表記の場合についてを書き、モンゴル文字から派生したトド文字、シベ文字、満州文字等については省略する。 特徴 左縦書き。つまり縦書き(上→下)で、かつ行は左→右へ書く(日語と逆) 語頭形(及び独立形)・語中形・語末形をもち、語のどの位置に書かれるかによって文字の形が異なる。また、それ以外にも特別な別形を持つ文字がある(10種持つ文字もあるらしい)。 単語は空白で区切られるが、単語の中にも空白(字空け)が現れうる。 宗教的なテキストのために、サンスクリット語やチベット語表記用の文字が追加されている。 チベット数字を元にした独自の数字をもつ。縦書き中でも左→右に横書きされるらしい*1。最近は回転させて文の

    モンゴル文字とUnicode - にせねこメモ
    rryu
    rryu 2018/07/20
    モンゴル文字もなかなかに複雑だな…
  • ISO/IEC 10646:2017発行 | スラド IT

    ISO/IEC 10646の第5版が、無事に発行されたとの連絡をいただいた。NHKニュースは、どうも質的なところを伝え切れていない気がするが、要は半年前に発行されたUnicode 10.0のISO版が、やっと発行されたということだ。 規格全体がISO Freely Available Standardsからダウンロード可能だが、PDFで2702ページもあるので注意すること。なお、戸籍統一文字のうち106870は、今回のISO/IEC 10646:2017から漏れてしまっており、今後U+9FEEあたりに緊急追加をおこなう予定である。 IPAは変体仮名の国際規格化も進めており、ISO/IEC 10646の追補版として2018年3月末までに発行される見込みだという。これが完了すれば、漢字、変体仮名全ての国際規格化が完了することになるようだ。

    rryu
    rryu 2017/12/26
    『NHKニュースは、どうも本質的なところを伝え切れていない気がするが、要は半年前に発行されたUnicode 10.0のISO版が、やっと発行されたということだ』
  • コンピューターで全漢字使用可に 6万字コード化 | NHKニュース

    語の漢字は、戸籍などに使われているものも含めると6万字あるのに対し、コンピューターは、実は1万字しか扱うことができません。これに対し、このほど15年越しの作業の末、6万字すべてが統一の規格にまとめられて、コンピューターがすべての漢字を扱えるようになり、ビッグデータの活用をはじめさまざまな効果が期待されています。 中には、メーカーなどが独自に対応した外字もありますが、コードが無いために、メーカーごとの互換性が無く、データを受け渡してもコンピューターが認識できずに「文字化け」してしまったり、ある人の名前に名の外字を充てたものと略字を充てたものの2つのデータがあった場合、コンピューター上では、別の人と認識されてしまったりするなどの問題が起きていました。 このためIPA=情報処理推進機構は平成14年から、経済産業省とともに外字を含めたおよそ6万字の漢字1つ1つに、コードを割りつける作業を進め

    コンピューターで全漢字使用可に 6万字コード化 | NHKニュース
    rryu
    rryu 2017/12/25
    あのめんどくさい戸籍用漢字を規格化したのか。昔は異体字扱いでなんとかしよう感があったけどどうやって入れたのだろう。
  • 絵文字がある種のUnicodeバグを世界から一掃しつつある件について|Rui Ueyama

    UnicodeのUTF-16エンコーディングではほとんどの文字(コードポイント)は2バイトで表現されるが、Unicodeに後から追加収録された文字の多くは4バイトで表現される。4バイト文字がうまく扱えないプログラムというのはわりとよくある。しかし世界中で広く使われるようになった絵文字がよりによって4バイト文字であるせいで、そのような文字が扱えない問題がよいペースで解決に向かいつつある。それについて少し説明してみようと思う。 Unicodeが80年代から90年代初頭にかけてデザインされたときの目標の一つは、Unicodeに含まれる文字数を65536個以内に収めることだった。現代の文章を実用的なレベルで表すためには、漢字などを含めてもそれだけの種類の文字があれば十分だと考えられたのだ。当然これは1文字を2バイトで表すことを念頭に置いていた。つまりコンピュータの揺籃期から当時に至るまで単純に英語

    絵文字がある種のUnicodeバグを世界から一掃しつつある件について|Rui Ueyama
    rryu
    rryu 2017/11/13
    UTF-16なJavaと.NETはつらみが顕在化してつらいというか、BMP外の文字がダメなのはだいたいこの2つとMySQLのせいだよな。
  • HTML文書は文字エンコーディングUTF-8でなければなりません - 水底の血

    さよならレガシーエンコーディング。 文字エンコーディング宣言が存在するかどうかにかかわらず、文書のエンコードに使用される実際の文字エンコーディングはUTF-8でなければならない。 4.2.5.5 文書の文字エンコーディングを指定する - HTML Standard 日語訳 Require utf-8 when specifying character encoding by sideshowbarker · Pull Request #3091 · whatwg/htmlにより、HTMLで使用できるエンコーディングはUTF-8のみとなりました。これにより、古いHTMLでは許容されていた、Shift_JIS、ISO-2022-JP、EUC-JP、UTF16LEといった文字エンコーディングは適合するHTMLではなくなりました。すでにNu Html CheckerでUTF-8以外の文字エンコー

    HTML文書は文字エンコーディングUTF-8でなければなりません - 水底の血
    rryu
    rryu 2017/10/09
    HTML5にしたいというだけでDOCTYPEだけ変えた系のサイトが爆死しそう。
  • MySQL 8.0ではデフォルトで濁点半濁点を区別しなくなる - かみぽわーる

    4月にMySQL 8.0のUnicodeと日語対応についてManyi Luさんとディスカッションする会があって、かなりいろいろ話してとてもよい会だった。その後いろいろ考えて感じてる懸念を端的に書き記しておく。 デフォルトのcollationがutf8mb4_0900_ai_ciになった これに関して僕は強い懸念を持っている。MySQL 8.0以前において、ふつうのWebアプリケーションなどで日語を扱う場合、実用上デフォルトのutf8mb4_general_ciかutf8mb4_binの2択であったと思う。デフォルトがutf8mb4_general_ciなので新しく作られるアプリケーションは通常は濁点半濁点が区別される状態で世に出てくることになる。けどMySQL 8.0.1のデフォルトのutf8mb4_0900_ai_ciは濁点半濁点を区別しないので、将来ユーザー名を登録するところでバイ

    MySQL 8.0ではデフォルトで濁点半濁点を区別しなくなる - かみぽわーる
    rryu
    rryu 2017/06/22
    aiがaccent incentives、ciがcase incentivesらしい。utf8mb4_ja_0900_as_cs_ksを指定するのが驚き最小だろうか。
  • Unicode 10.0.0、リリースされる | スラド

    昨日(6月20日)付でUnicode 10.0.0がリリースされたとの連絡を、日時間の今日(6月21日)にいただいた。今回のリリースでは8518字が追加されていて、うちCJK統合漢字拡張Fが7473字(U+2CEB0~U+2EBE0)、変体仮名が285字(U+1B002~U+1B11E)の追加である。 私(安岡孝一)個人としては、これで戸籍統一文字と住民基台帳ネットワーク文字がほぼ一段落したのがありがたいが、5月23日・24日の日記にも書いたとおり、多少、問題が積み残しとなってしまった。また、絵文字の追加(U+1F900~U+1F9E6)や、「BITCOIN SIGN」の追加(U+20BF)は、今後、微妙な禍根を残す気がしないでもない。 まあ、とりあえずは、戸籍統一文字と住基統一文字のIVS提案を、早急に進めてもらうべきかしら。

    Unicode 10.0.0、リリースされる | スラド
    rryu
    rryu 2017/06/21
    通貨記号にBitcoinが追加されるとは。