こんにちは。 メディアサービス開発部Webアプリケーション開発課のフサギコ(髙﨑)です。部署名が変わりました。Ruby onRailsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。本記事では、UTF-8環境下で動くRailsがShift_JISな外部APIと通信する方法についてお話しします。 前提知識 文字コードUTF-8環境下で動くRailsがShift_JISな外部システムと通信するには Shift_JISな外部APIに対してPOSTリクエストする べた書きとしてはRailsにおいては Shift_JISで使用できない文字が混ざっていないかをバリデーションする Shift_JISな外部システムからPOSTリクエストを受ける おまけ: ユーザのブラウザにShift_JISでPOSTさせる

Ruby Advent Calendar 2021 - Qiita の5日目の記事です。 こんにちは。ima1zumiです。 私はRubyKaigi Takeout 2021 で Dive into Encoding というタイトルでオレオレ文字コードを作って文字コードを学ぶ話をしました。 その中で、C拡張のgemとして自作文字コードの Encoding::IROHA をRubyで使えるようにしました。 それがこちらです。 https://github.com/ima1zumi/encoding_iroha/ このgemを使うことで、みなさんのお手元でもEncoding::IROHAという文字コードが使えるようになります。 どう作るかとかそういった話はRubyKaigi Takeout 2021のアーカイブをご覧ください。 ですが思ったのです。C拡張のgemってビルド要るからめんどくさいで
"I'm Feeling Lucky" -Building Great Search Experiences for Today's Users (#IAC19)

入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTTTech Conference #4 講演資料)
文字コード再入門 ─ Unicodeでのサロゲートペア、結合文字、正規化、書記素クラスタを理解しよう! 文字コードには、どのような種類があり、それぞれどのような意味を持つのか、といった、文字コードの基本的な概念、従来の文字コードを紹介し、現在のUnicodeの構成を概説し、プログラミングにおいて注意すべき箇所をいくつか取り上げます。 ソフトウェア開発に携わる方の多くは、何らかの形で文字コードに触れることがあるでしょう。文字や記号をコンピュータ上でデータとして扱うには、文字コードの知識が必要不可欠です。本稿では、書籍『プログラマのための文字コード技術入門』の著者である矢野啓介さんが、知っておきたい基礎知識を分かりやすく解説します。 文字コードとは? Unicode以前の文字コード Unicodeとその主な符号化形式 UTF-16 UTF-32UTF-8 Webで文字コードを指定する仕組み

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は濁点半濁点を区別しないので、将来ユーザー名を登録するところでバイ
4月にMySQLの日本語コレーションについて語り合う場に呼ばれていろいろ話を聞いてきました。すぐにブログを書こうと思ったんですが、はや2ヶ月経過…。 ときどき、自分がMySQLの文字コードに関して発表する際に、次のようなスライドをいれてるんですが、MySQL 8.0 でとうとう日本語コレーションが入ることになったのに、なんか期待してたのと違いました。 で、その辺の話を聞きました(2ヶ月も経ってるのでうろ覚え)。 Q. わざわざ日本語ロケール作るんだったら日本人が扱いやすいロケールにしてほしい utf8mb4_ja_0900_as_csはMySQLが独自に考えたものではない。Unicode規格に従っている。過去にいろいろ独自にやって失敗してきてるので、もう独自にやるのは避けたい。ai(accent insensitive)で「ハ」=「パ」=「バ」になるのも、ci(case insensi

はじめに 多言語化概論 M17N とは L10N I18N M17N I18N 等の語源 UCS Normalization と CSI UCS Normalization 方式Perl’s case (UTF-8)Java’s case (UTF-16) Mosh’s case (UTF-32) TRON’s case (TRON コード) CSI 方式Ruby M17N の概念 CSI 方式 String がエンコーディングを持つ Script Encoding Magic Comment 外部エンコーディングと内部エンコーディング default_external と default_internal CommandLine option -E と -U ロケールエンコーディング ファイルシステムエンコーディングWindows の場合 Unix 系の場合Mac OS X
調査方法 顔文字検索の人気サイト『顔文字屋』に掲載されている、週間顔文字ランキング(2017/11/5~2017/11/11)から上位300種類をリストアップし、そこに使われている各文字について、Unicodeのどのブロックに属しているかを調べました。 三(‘ω’)三( ε: )三(.ω.)三( :3 )三(‘ω’)三( ε: )三(.ω.)三( :3 )ゴロゴロゴロ ( ๑❛ᴗ❛๑)۶♡٩(๑❛ᴗ❛๑ ) ( *¯ ³¯*)♡ㄘゅ ┌(┌^o^)┐ホモォ… ┏○)) アザ━━━━━━━━ス! ((〃’・∀・)ノ”)-ω-`*)ヨシヨシ (っ’-‘)╮=͟͟͞͞♡好き♡ ♡(*>ω<)ω<*)ギュ~ッ♡ ( ˙ө˙) ╰( ^o^)╮-=ニ=一=三 (*˘︶˘*).:*♡ 三└(┐卍^o^)卍ドゥルルル 三┗(┓卍^o^)卍ドゥルルルル (ノ≧ڡ≦)てへぺろ 三(‘ω’)三(

みんな絵文字好きすぎだろ… というRT状況なわけですが。emoji zwj sequences 元々、👪 (U+1F46A)という、1文字で家族を表す絵文字があったわけですが。 「白人の絵しかないのはおかしい」とか「LGBT に配慮しろ。なぜ男女ペアしかないんだ」とかいろいろと地雷になってしまった結果、 合字で解決しようとかいう仕様が Unicode に入ってしまって今に至っているわけですが。 ちなみに、単に合字になるというだけじゃなくて、 「合字は1文字として扱え」という仕様も決まっています。 仕様は以下のページにあり。 Unicode® Standard Annex #29 UNICODETEXT SEGMENTATION まあ、仕様があるといってもそれにアプリが対応しているかどうかというとまちまち。 以下の動画でのChromeの動作みたいに、「ページ中ではちゃんと1文字として扱

Shift_JIS のCSV で連携する外部サービスがあり、DB ではUTF-8 でテキストを持っていたため文字コードを変換する必要が生じた。 ところがUTF-8 に存在する多くの文字は Shift_JIS に対応がないため変換することができない1。 そこで、事前に NFKC 形式で Unicode 正規化することで変換可能な文字を増やすことを試みた。 まずは Unicode 正規化の前提として、Unicode の正準等価と互換等価について説明する。 以降の U+16進数 という表記は Unicode のコードポイント (文字に ID のようなものが割り当てられている) を示す。 また、コードポイントに対応する文字の詳細は https://codepoints.net/ といったサイトで確認することができる。 正準等価 例として、ひらがなの「が」について考える。Unicode では「
こんにちは、晴れて2020新卒になったmipsparcです。最近は趣味の鉄道技術系同人誌の新版が出来上がって喜んでいます。本記事では、入力値には必ずと言っていいほど混入する不必要な制御文字への対処方法をご紹介します。ユーザーに文字列を入力してもらうことのあるすべてのサービスで活用できる話かと思います。 不要な制御文字が入ることで生じる問題 前提として、この記事は制御文字類が必ずしも邪魔と言いたいわけではありません。 制御文字は多言語対応(特に右から左方向に記述する言語)などで重要なときもありますが、今回は問題が発生しうるケースのお話をします。 「腐向け」 「メリークリスマス」 「ゾンビ」 なんの変哲もない3つのイラストタグですが、どれも不可視の制御文字が混入しています。 $php -r "var_dump(json_encode('腐向け'));" string(26) ""\u2

せっかくUnicodeに絵文字が入ってるんだしフォントで表示したいよね。したいしたい。 筆者はOS XでEmacsを使ってるので他の環境ではどう見えるのか知らないけど、とりあえず設定してみた。 (画像は本記事の設定済みOS XのEmacs 24.5でSKK日本語入力FEPの絵文字辞書❤を表示したところ) 注意: ↑の画像はEmacsのカラー絵文字機能が有効だったEmacs24のものですEmacs 25, 26ではカラー絵文字を表示することは基本的にはできません。 また、モノクロの絵文字表示にもSymbolaフォントのインストールが必要です。 つまるところ絵文字のグリフが入ったフォントセットが適切に設定されてないから何も見えないので、要するに今はまだ過渡期なんだって話ですね。 ただの設定なんだけれど、若干ややこしかったので https://github.com/zonuexe/emoji

MySQLでは異なる字が等しいと見なされることがあるということを書きました。 tmtms.hatenablog.com この動きはMySQLが独自に変なことをしているわけではなく、Unicodeの規則に従っています。MySQL 8.0 のデフォルトのCollationは Unicode 9.0.0のUnicode Collation Algorithm(UCA) に従っています。 文字にはそれぞれ Weight という値が設定されていてソートに使用されています。この値が同じなら等しい文字とみなされます。 Collation utf8mb4 のデフォルトの Collation は utf8mb4_0900_ai_ci という名前ですが、これは次のような意味です。 名前の要素 意味 utf8mb4 charset名 0900 Unicodeバージョン9.0.0ai アクセントの違いを無視
2019.07.08 週刊Railsウォッチ(20190708-1/2前編)ActiveRecord::FixtureSetがめちゃ強くなってた、MacだとRubyが遅い理由、Puma 4登場ほか こんにちは、hachi8833です。「👨🦲」という絵文字をSlackに貼ったらこんなふうにぶっ壊れたことで合字だということを知りました。 つっつきボイス:「Bald?」「人間の顔の絵文字にズラのコンポーネントをかぶせてたことが判明しました😆」「😆」 参考: 👨🦲 Man: BaldEmoji 参考: 🦲Emoji Component BaldEmoji 「そうそう😆、Unicodeってこんなふうに複数の文字を組み合わせて合字が作れるんですよね☺️」「4人家族もパパとママと子ども2人を悪魔合体っぽく作ったりしてますね👨👩👧👦」「こういうのに長けたUnicod

こんにちは、hachi8833です。 少し前に、babaさんから「Rubyの内部文字コードはUTF-8じゃないよ」とツッコミがありました。 (追記: 上は会話の途中から切り取りましたのでご了承ください) いきなりの展開にくらくらきましたが、babaさんはさらにたたみかけます。 こうしたことはとっくにご存じの方も多いと思いますが、「Rubyといえば2.0以来UTF-8完全対応なんじゃないの」と勝手に思い込んでた私は脳に掌底を食らったような思いです。ああ、でもこういうことがあるから面白い。 ⚓ プログラミング言語と内部文字コードの関係 まず最初に押さえておきたい点です。プログラミング言語で文字コードに関連する部分は、「文字列」「正規表現」「入出力」「コード中の文字リテラル(""の中など)」「コード中の文字リテラル以外の要素(変数名など)」「ファイル名」などが中心になります。そして文字列に関連し

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国家が建設されつつある。一

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く