ウォンテッドリー社内で数回に分けて発表した「文字コードの話」のスライドです。 2026/02/21: まだ埋めきれていない部分、出典の確認・整理が不十分な部分等がありますが、ちょうど文字コードが話題になっているので一旦アップロードしてしまいます。ご指摘歓迎です。 【未適用の修正項目】 …
これはRubyアドベントカレンダーとSmartHRアドベントカレンダーの17日目の記事です。 qiita.com qiita.com 12/9 に nagano.rb で文字について発表して、同じのを 12/15 に SmartHR 社内で LT しました。 スライドはこちら speakerdeck.com 同じ文字? この2つの文字は同じものに見えますか? 実はこれは同じ文字を異なるフォントで表示したものです。 ゴシック体と明朝体で字体が異なって見えるのと同じことなので、同じ文字と言えるでしょう。 コンピュータで扱う文字は文字ごとに番号(コードポイント)が振られていて、プログラムから見たときには同じコードポイントであれば同じ文字として扱われます。 Ruby で文字のコードポイントを得るには String#ord を使用できます。 '直'.ord.to_s(16) #=> "76f4" '
参照: http://www.unicode.org/versions/Unicode6.0.0/ch03.pdf の "Table 3-7. Well-Formed UTF-8 Byte Sequences" アルゴリズムを理解する上で重要なUTF-8の特徴について述べます。 1コードポイントは1-4バイトのシーケンスで表現される 上位ニブル(1バイト8ビットのうち、上位4ビット)を確認することでシーケンスの情報が得られる そのバイトがシーケンス先頭バイトかどうかわかる もしそれがシーケンス先頭バイトだったなら、何バイトのシーケンスかわかる 先頭でないバイトは基本的に0x80..0xBFの範囲が許容されているが、何箇所か例外があるのでそれもバリデーションしなければならない 例外の箇所は表では太字で示した 例えば、表を見て分かるように、先頭バイトが0xE0のとき2バイト目は0xA0..0x
導入 アイヌ語は日本語と異なり、閉音節(子音で終わる音節)も存在するので、表記の際音素文字であるラテン文字なら、そのまま 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
2023.05.10 官報に使われる「官報文字」というものがあります。 そこには渡辺さんの「辺」の異体字が140文字も登録されています。 日本語の常用漢字には2136文字ありますが、そこには邉や邊などは入っていません。 そこでJISの第四水準までを含むJIS X 0213という標準を定め、スマホやパソコンではここまでを標準的に表示できるようにしています。 ところが我が国の戸籍で使ってもよいとされている文字はそれを遙かに超えていて、少なくとも55,270文字もあります。 全ての国民の氏名をコンピュータで扱えるようになることを目指して、戸籍統一文字や住基ネット用の統一文字を網羅した「文字情報基盤」を2011年に策定し、それにあわせたフォントを作成し、無償で提供しています。 この「文字情報基盤」(MJ)には、58,862文字が含まれています。 しかし、このMJを全庁的に採用している自治体は、川口
Unicode Consortiumは9月13日、Unicode標準のバージョン 15.0が利用可能になったことを発表した。バージョン15.0では4,489文字が追加され、合計で14万9,186文字になった。 追加文字には20個の新しい絵文字と 4,193個のCJK(中国語、日本語、韓国語)の表意文字とともに、2つの新しいスクリプトが追加され、合計161個のスクリプトが含まれる。 新しいスクリプトには以下のようなものがある。 ナグ・ムンダリ:インドで使われる言語であるムンダリを書くために使用される現代の文字 カンナダ語文字:インドでコンカニ語、アワディ語、ハビャカ語カンナダ語を書くために使用される文字 カクトビック数字:イヌイット語とユピック語の数を表示するために、アラスカ州カクトビックのイヌピアク語話者によって考案された文字 また、20の新しい絵文字にはヘアピック、マラカス、クラゲ、カン
A static site to link people to when their code is displaying Japanese wrong. View the Project on GitHub heistak/your-code-displays-japanese-wrong Why am I here? If someone gave you a link to this page, that person probably thinks your code displays Japanese wrong. In short, from a native Japanese eye, yѳur ҭєxҭ lѳѳκs κιnd ѳf lικє ҭЋιs. This page will give you a brief description of the glyph appe
回答: Java, JavaScript, Pythonなど、多くの言語でUnicodeを用いたUCS(Universal Character Set)方式を採用している理由は、推測ではありますが、 * Unicodeで十分と思った * UCS方式の問題にあまり遭遇したことがなかった * CSI方式は実装が複雑すぎて現実的ではないと思った とかではないでしょうか。これらの言語の設計者はみな欧米人で、だいたいASCIIかISO-8859でテキストが表現できてしまうので、マルチバイト文字の闇を覗き込む機会はほとんどなかったんですよね。 一方、私を含めて日本人(またはアジア人)たちは...
2011/12/09IT, ビルマ語(ミャンマー語), ミャンマー絡み 以前ビルマ語(ミャンマー語)についてブログに書いたのは2009年2月の「ビルマ語をWindowsで~Unicode以前」だった。その後すぐに続編を書く予定だったのが、結局今日になってしまった。3年越しの恋ならぬ、3年越しの ユニコードだ。 Unicode(ユニコード)とは、コンピュータで文字を扱うための世界標準の規格だ。Unicodeにはビルマ語も含めて世界中の文字が規定されている。このおかげで、コンピュータで簡単に世界各国の文字を見たり書いたりすることができる。ちなみに、ビルマ語はUnicodeの1000番~109F番とAA60番~AA7B番までのエリアを割り当てられている。ちょうど1000番で覚えやすいが、1000といっても16進の1000だから10進で数えると4096番目だ。 Unicodeの1000番〜109F
文字コード再入門 ─ Unicodeでのサロゲートペア、結合文字、正規化、書記素クラスタを理解しよう! 文字コードには、どのような種類があり、それぞれどのような意味を持つのか、といった、文字コードの基本的な概念、従来の文字コードを紹介し、現在のUnicodeの構成を概説し、プログラミングにおいて注意すべき箇所をいくつか取り上げます。 ソフトウェア開発に携わる方の多くは、何らかの形で文字コードに触れることがあるでしょう。文字や記号をコンピュータ上でデータとして扱うには、文字コードの知識が必要不可欠です。 本稿では、書籍『プログラマのための文字コード技術入門』の著者である矢野啓介さんが、知っておきたい基礎知識を分かりやすく解説します。 文字コードとは? Unicode以前の文字コード Unicodeとその主な符号化形式 UTF-16 UTF-32 UTF-8 Webで文字コードを指定する仕組み
新元号が「令和」に決まったことなので、MySQLでの扱いについての話を。 普通の文字 「令」も「和」もJIS第一水準に含まれている基本的な文字なので普通に日本語が使用できるcharsetで使用できます。 mysql> create table t ( utf8mb4 varchar(255) charset utf8mb4, utf8mb3 varchar(255) charset utf8mb3, utf16 varchar(255) charset utf16, utf32 varchar(255) charset utf32, cp932 varchar(255) charset cp932, eucjpms varchar(255) charset eucjpms, sjis varchar(255) charset sjis, ujis varchar(255) charset
Unicode Consortiumは9月6日(米国時間)、「The Unicode Blog: New Japanese Era」において、2019年5月1日からの適用が予定されている日本の新しい元号をサポートするため、新しい元号記号のコードポイントとしてあらかじめ「U+32FF「を予約したと発表した。 元号が発表されたら、U+32FFのキャラクタ名、デコンポジション、代表的なグリフを含んだバージョン12.1のドットリリースを実施すると説明している。 新たな元号の発表時期は今のところ未定だが、現在のところ2019年5月1日の1カ月ほど前に公表されると見られており、元号を利用するシステムは約1カ月という短い期間で新たな元号に対応する必要があると考えられている。今回Unicode Consortiumから実施されたアナウンスは、こうした短い期間における対応を支援することになる。 平成を意味す
Javascriptとかいう変態は置いておいて少なくともC++でstringのlengthといったらこれですね。 code points 何コードポイントか、という数え方です。 U+0061, U+0928, U+093F, U+4E9C, U+10083 というのは5コードポイントですね。 ちなみにUTF-32のときのCode Unit数と同一です。 grapheme cluster 何書記素クラスタか、という数え方です。 (aनि亜𐂃) 人間が見たときに一文字と解釈するかという考え方です。 例えばनिはコードポイントで見るとU+0928(न), U+093F(ि)という2コードポイントで表されます。しかしこれを別々の文字とは人間は解釈せず、一文字と認識します。 他の例も見てみましょう。 प,ू,र,ी,त,ि 👩❤️💋👨 kiss: woman, manとして登録されてい
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 本記事は下記のtweetから始まるスレッドに触発され、@qnighyや@na4zagin3からアイディアを拝借して書いた。 i18n力が最強の国は国内に複数の言語があり、そのうちいくつかは他国でも使われている言語の方言で、1バイト文字での代替表記が困難で、歴史的にISO-2022ベースの文字コードとUnicodeと独自エンコーディングが混在していて、フリガナなどの特殊な組版規則があり、右書き左書き縦書きを併用し、 — Masaki Hara (@qnighy) 2018年8月6日 皆さんのおかげで最強のi18n国家が建設されつつある。一
iPhoneのメッセージアプリやAndroidのWhatsAppで特定のUnicode処理するとシステムがフリーズする「Black Dot」バグが発見されたそうです。詳細は以下から。 9to5MacやEverythingAppleProのFilipさんによると、特定のUnicodeの組み合わせをiPhoneのメッセージアプリやAndroidのWhatsAppで処理させると、システムをフリーズまたはクラッシュさせることが出来る通称「Black Dot」というバグが発見されたそうです。 A new Unicode text bug is being spread around today, popularised by a video by EverythingApplePro. It’s being called the ‘black dot’ bug because of its orig
今では多くのソフトがUTF-8を標準として採用し、たとえ英語圏で開発されたソフトでも日本語処理に困らないことが多い。 しかし、それは、3バイトの漢字までで、4バイトになってしまう「土の異体字 」は扱えないことに出くわすことが多い。 最近、世のブームに引きずられてという訳ではないのだが、AI、言語処理系の何かをするとき、Pythonはツールが揃っているので使うことが多い。 Python自体は、4バイトの漢字も扱えるのだが、Pythonに非常にたくさんあるパッケージの中には扱えないものもある。 Pythonで文字処理をしていたのだが、GUIを用意しないと不便だなと思い、PythonのGUIツールキットのTkinterを使って簡単なGUIを作りつつあるところだ。 それで、用意してあるテキストファイルを処理しようとしたら、「土屋(異体字)」さんの情報を処理しようとしたところで止まってしまった。
UnicodeのUTF-16エンコーディングではほとんどの文字(コードポイント)は2バイトで表現されるが、Unicodeに後から追加収録された文字の多くは4バイトで表現される。4バイト文字がうまく扱えないプログラムというのはわりとよくある。しかし世界中で広く使われるようになった絵文字がよりによって4バイト文字であるせいで、そのような文字が扱えない問題がよいペースで解決に向かいつつある。それについて少し説明してみようと思う。 Unicodeが80年代から90年代初頭にかけてデザインされたときの目標の一つは、Unicodeに含まれる文字数を65536個以内に収めることだった。現代の文章を実用的なレベルで表すためには、漢字などを含めてもそれだけの種類の文字があれば十分だと考えられたのだ。当然これは1文字を2バイトで表すことを念頭に置いていた。つまりコンピュータの揺籃期から当時に至るまで単純に英語
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く