タグ

文字コードに関するt-murachiのブックマーク (35)

  • 漢字のようで漢字でない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株式会社
    t-murachi
    t-murachi 2020/10/08
    検出修正スクリプトもまま埋め込みだとかえって何やってるか判らんのでコード番号で書いたほうがむしろ親切な気もする(´・ω・`)
  • trimやstripが全角スペースをトリミングしない理由で盛り上がったのでまとめてみた - Qiita

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

    trimやstripが全角スペースをトリミングしない理由で盛り上がったのでまとめてみた - Qiita
    t-murachi
    t-murachi 2019/06/20
    そもrubyよりUnicodeの方が後発なんですよね… やるとしたら他の言語でもそうであるようにUnicode対応に伴う国際化対応の一環での機能追加でしょうし、そのために既存の関数の挙動を変えることはしないでしょ(´・ω・`)
  • Unicodeの基本から解説。新元号「令和」の「令」がUnicodeに2つある理由 – cod-log

    はじめに 新元号発表 日4/1お昼ごろ、新元号が「令和」と発表されました。 さて、この新元号に含まれる「令」という文字ですが、これは「CJK互換漢字」といわれるUnicodeにおける特定のグループに含まれる文字のひとつであり、Unicodeに同一の「令」という文字が、ふたつ含まれているのです。 記事は、 Unicodeについての基知識 CJK互換文字とは何か? 「令」がなぜ、CJK互換文字に含まれるのか? アプリケーション開発への影響 について調査してまとめたものです。 Unicodeについて CJK互換漢字について理解するためには、まずUnicodeの理念およびUnicodeのラウンドトリップ変換互換性の原則についてを理解する必要があります。 Unicodeとは Unicode(ユニコード)は、16ビットの整数値で表した符号位置と、文字とを対応付ける規格のことです。 「符号位置」と

    Unicodeの基本から解説。新元号「令和」の「令」がUnicodeに2つある理由 – cod-log
    t-murachi
    t-murachi 2019/04/02
    既存の問題が顕在化しただけ。少なくとも帳票周りで気を揉む必要はない。ユーザー入力から年号を拾う必要がある場合は注意が必要。
  • C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita

    C++ Advent Calendar 2018 この記事はC++ Advent Calendar 2018 15日目の記事です。 14日目: VTKライブラリ 16日目: C++のエラー処理との付き合い方 当初見積もりよりも大幅に長い記事となり、投稿したのは12/22で1週間遅刻です。すみません。 お知らせ cpprefjpにchar8_t型追加について解説を書きました。ぎゅぎゅっとコンパクトに、また査読を受けて中立的な表現で書いていますので、よければどうぞ。 UTF-8エンコーディングされた文字の型としてchar8_tを追加 - cpprefjp C++語リファレンス 追記 全ての開発者が知っておくべきUnicodeについての最低限の知識 - GIGAZINE Unicodeについて簡潔にまとまってるいい記事を見つけました。 Caution この文章には以下の要素が含まれます。苦手

    C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita
    t-murachi
    t-murachi 2018/12/23
    低レベル言語であろうとする意識と、現実のOSが提供するAPI (特にファイル周り) との兼ね合いとのせめぎあいって側面も…(´・ω・`)
  • Ctrl-[ が Esc になる理由 - Humanity

    理由 SHIFT キーはキーコードを -0x20、CTRL キーはキーコードを -0x40 する機能 全文 vim-jp.slack.com の #random から。 heavenshell [10:08 AM] TouchBar MBP にしたら強制的に C-[ になるので、オススメです!ようやく矯正できた。 mattn [10:09 AM] 人間の方が最適化されている yoshitia [10:12 AM] Escが物理的にない状況用にデフォルトでCtrl-[ 用意してるのすごい mattn [10:14 AM] いや、用意した訳ではないです。 SHIFT キーはキーコードを -0x20、CTRL キーはキーコードを -0x40 する機能なのです。 なので `[` つまり 0x5b は 0x1b になる。 0x1b = ESC 同様に CTRL-H は H が 0x48 なので 0x

    Ctrl-[ が Esc になる理由 - Humanity
    t-murachi
    t-murachi 2018/10/05
    歴史的経緯ってやつだな。コンソールベースのvimがその仕組みを踏襲するのは自然。Ctrl-C は SIGINT。しかし会話が進むにつれて話がこんがらがってゆくw
  • 『Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社』へのコメント

    学び Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社

    『Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社』へのコメント
    t-murachi
    t-murachi 2016/10/14
    「ぶっちゃけ普通にコード書いてる分には意識しないで良い話」いやいやいやいや、境界は文字? オクテット? サイズは文字数? オクテット数? 正規表現の\wは[A-Za-z_]相当? 国籍問わず文字と呼べるもの全般? 大違いですよね??
  • Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社

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

    Rubyの内部文字コードはUTF-8ではない...だと...?!|TechRacho by BPS株式会社
    t-murachi
    t-murachi 2016/10/14
    「保存」という言葉の使い方がすごく引っかかる… 「保持」とかじゃ駄目なん? (´・ω・`)
  • 日本語 Windows 環境で Cwd::abs_path がうまく動かない件: 国民宿舎はらぺこ 大浴場

    Excel 地獄に立ち向かうべく、複数の Excel ファイルから全検索をかけてどうにかするような処理を Perl の Win32::OLE を使って書こうかと思ったんだけど、 OLE での Workbooks.Open メソッドを Perl から呼ぶ場合、カレントディレクトリの解釈が異なるとかの理由でファイル名を絶対パスで渡さなきゃならない。 そこで、 Cwd なるパッケージの abs_path 関数を使ってファイル名の絶対パスを取得して渡すやり方を試してみたんだけど、特定のファイル名をこの関数に渡した時に例外が発生する現象に苛まれて結局その日のうちにツールを完成することができなかった。 手元の環境で再現状況のログを取ることができたので以下に掲載。 C:\Users\murachi\Documents>echo hoge > 確定申告.txt C:\Users\murachi\Docum

  • JavaのString生成方法がボトルネックになっていた話 - WAF Tech Blog | クラウド型 WAFサービス Scutum

    はじめに 先日、私たちが開発しているクラウド型WAFサービス、Scutum(スキュータム)において、予想していなかった箇所の修正によってサーバの負荷が大幅に減るということがありました。原因はこのエントリのタイトルにもあるように、Stringクラスのインスタンスを生成する際の方法にありました。 Stringクラスのコンストラクタとcharset Stringクラスにはいくつかのコンストラクタが用意されています。我々が使っていたのはString(byte[] bytes, String charsetName)です。2つめの引数で、"MS932"や"UTF-8"のような文字集合(以下charset)を明示的に指定するものです。 ScutumのようなWAF(Web Application Firewall)は通常のウェブアプリケーションとは異なり、起動している間にさまざまなcharsetを扱うこ

    JavaのString生成方法がボトルネックになっていた話 - WAF Tech Blog | クラウド型 WAFサービス Scutum
    t-murachi
    t-murachi 2015/05/08
    Java に限らず、ロケールを扱うオブジェクトって、結構高コストだったりするんですよね。構文糖衣で上手くやったつもりが…みたいなことはまあまあありそう。
  • この「邉」を作ったのは誰だぁ!! - 帰ってきた💫Unicode刑事〔デカ〕リターンズ

    『Unicode IVS/IVD入門』(田丸健三郎、小林龍生)のなかで、目玉がWindows 8のIVS対応を紹介している第2章だとするなら、背骨といえるのが、IVSという枠組み自体について解説している第5章だよね。 たとえがしっくりきませんが、こだわらずに先に進みましょう。 その第5章のなかでも、IVSの基中の基をわずか1行に凝縮して視覚化しているのが、図5-7だ。 はいはい。 で、今日は図5-7に突っ込んでみようと。 もちろん、突っ込みますよー! あのさ、そういうテンションいらないから。この図なんだけど、どう? んー、解説抜きで見せられても、ちょっと難しいですね。 いや、当は難しくないんだよ。「漢字に異体字セレクタを付けるとグリフを指定できます」って言ってるだけの図なんだから。 この真ん中の「E010B」が右では「E0110」に変化してるのは、どういう意味なんですか? 誤植だね。

    この「邉」を作ったのは誰だぁ!! - 帰ってきた💫Unicode刑事〔デカ〕リターンズ
    t-murachi
    t-murachi 2013/04/24
    そも Unicode の目指すゴールが世界各国の文化の実態に即してない。字体が重要な場面では必ずしも検索できる必要はないし、何でも文字コードで解決という考え方自体に無理があると思う。
  • GNU/Linuxの方がWindowsより日本語サポートが優れている

    今や、GNU/Linuxの方が不自由なWindowsより日語サポートが優れている。これは純然たる事実である。 私は、UIが日語化の質を論じているのではない。私はUIの言語を英語にしているので、UIの日語の質についてはわからない。ただ、2012年となった今では、GNU/Linux/Xの環境の方が、圧倒的に日語を扱う環境が優れていると考えているのだ。 まず、現行のまともなディストリは、文字エンコードをデフォルトでUTF-8にしている。このため、不自由なWindowsにおける、カオスな大量のマルチバイト文字コード混在環境の問題は存在しない。確かに、不自由なWindowsのネイティブの文字エンコードはUTF-16だが、下位互換性を保証するために、既存のマルチバイト文字をすべて継続してサポートしているために、未だにカオスな状況になっている。多くのプログラムは、嘆かわしいことに、いまだにANS

    t-murachi
    t-murachi 2012/04/05
    確かに、 ANSI 版 Win32 の問題は、結構根深い気がする。とりあえず MS-VS 上のテキストを適当なテキストエディタにコピペすると文字が化けるのどーにかして欲しい (泣
  • iconvがクソすぎる

    思うに、私が最初のOSに不自由なWindowsを選んだのは正解だったかもしれない。すくなくとも、Win32 APIはPOSIXよりはるかに使いやすい。 問題はiconvだ。一体どこの糞が何をキメながら設計したらこうなったんだ。狂っているにも程がある。 size_t iconv (iconv_t cd, const char ** inbuf, size_t * inbytesleft, char ** outbuf, size_t * outbytesleft) ; ポインターのポインターであるには理由がある。iconvは、すべて書き換えるからだ。ポインターを書き換えるのでポインターへのポインターを要求する。当然だ。当然であって欲しくないが当然だ。 なんでそんなに馬鹿げた副作用を持ち込むんだ。それでは必ずlvalueを渡さなければならないし、大抵の場合、もとの値を保持しておきたいから、オブ

    t-murachi
    t-murachi 2012/04/05
    「ちなみに、今のUbuntuのiconvパッチを当てたunzipにはバグがある。…」<まぢですか… orz
  • Twitterで見かけるハミ出した顔文字の正体 - RyoAnna

    少し前からTwitterで見かけるようになった、上下に飛び出す変な顔文字。 気持ち悪いのであまり関わらないようにしていたのだが、この顔文字の謎が明らかになったのでお伝えしたい。 いつものようにiPhoneのApp Storeをぶらぶらしていた時のこと。 Unicoder Lite (App Store)というアプリが気になりダウンロードした。 起動するとなにやら見慣れた文字が。 顔文字でよく使われるギリシャ文字やキリル文字だ。 しばらく眺めているとこんな符号が。 合成用区分符号 これが上と下の行にはみ出す顔文字の正体だった。 ためしに作ってみよう。 ベースとなる顔文字を置く。 左目に合成用区分符号を入れる。 続いて右目に。 見事にはみ出す。 Unicode(ユニコード)とは、世界中のコンピュータの文字を符号化したもの。その "U+0300-036F" に配置されているダイアクリティカルマー

    Twitterで見かけるハミ出した顔文字の正体 - RyoAnna
    t-murachi
    t-murachi 2011/06/08
    こんなもん使われても Twit ユーザーの俺様的にはよゆーでスルーだがな。
  • はらぺこ日誌» ブログアーカイブ » libiconv で文字セット自動認識

    ご無沙汰ぶりです…。 以前、wchar_t はどうにも使い物にならないからどうしよう、といった記事を書いたのですが、その続きのお話です。 表題の通りで、 libiconv を用いて文字セットを自動認識する処理のサンプルを書いてみました。詳しい経緯はTicket 内で逐次コメントしています。 これがそのサンプルプログラムです。このプログラムは、 標準入力からファイルを読み込み、 ファイルの文字セットを自動認識し、 句点「。」をピリオド「.」に、読点「、」をカンマ「,」に置換し、 UTF-8 に変換して標準出力に書き出す。 ということをやるものです。 で、以前のブログ記事では、 というわけで、内部コードは wchar_t のような型名で定義するのではなく、より具体的に文字セットで定義した方が良さそうだなぁという結論に至りました。候補は以下の 2通りです。 UCS4 を内部コードとし、物理型は符

  • PHPでaddslashes()でエスケープしてもSQLインジェクションな穴

    ■data uri変換機 これはそそります。なるほどぉ。 data:text/html;charset=utf-8;base64,aHR0cDovL2xhLm1hLmxhL21pc2MvanMvZGF0YS5odG1s ■FirefoxでWindowsのクリップボードに値を設定する方法 上を踏まえて。 http://la.ma.la/misc/js/setclipboard_for_firefox.html http://la.ma.la/misc/js/setclipboard.txt Opera8.5でもいけてる気がします。 外部のサーバを利用せずにHTML単体でいけているのは、dataスキームが有効だからですね。IE7ではまだdataスキームって有効じゃないのでしたっけ? え?オーバーフローするかって?しないでしょ(笑) Firefoxでテキストをクリップボードにコピーする方法::最

    PHPでaddslashes()でエスケープしてもSQLインジェクションな穴
    t-murachi
    t-murachi 2010/02/20
    これ、今でもそのままなのかしら…?
  • UnicodeとUTF-8の違いは? - Humanity

    という2chのスレがかなり勉強になったのでまとめ。 少しでも有用だと思ったものは載せてあるので結構長いです。 Unicodeのような文字集合(符号化文字集合?)やUTF-8のようなエンコーディング方式に限らず色んな文字コードにまつわる話があります。 たびたび話が繰り替えされますがそれは確認ということで。 (元スレ) 追記:簡単にまとめました。 1 :デフォルトの名無しさん:2007/04/30(月) 20:02:37 ビッグインディアンとかなんとかかんとか 3 :デフォルトの名無しさん:2007/04/30(月) 20:05:48 また、頭の悪そうなスレが・・・ >>1 それは魚とマグロの違いを訊ねるようなもんだ。 4 :デフォルトの名無しさん:2007/04/30(月) 20:06:49 魚と鮪というよりは、魚と刺身の違いのような気がする。 5 :デフォルトの名無しさん:2007/04/

    UnicodeとUTF-8の違いは? - Humanity
    t-murachi
    t-murachi 2009/12/01
    基本的な概念から歴史的経緯に至るまでいろいろと…。Unicode は今後絶対に必要になる技術なのにどうしても好きになれないものの一つ、という感覚はまともな技術者たちの間で未来永劫共有されるんじゃ無かろうか…。
  • 仙石浩明の日記: 文字化けしていなくても MySQL 内の文字コードが正しくない場合がある

    MySQL 5 からテーブルごとに文字列のエンコーディングを指定できるようになった (「そんなことは知ってるYO!」という人も多いと思うので、 そういう人は「これからが題」 の部分まで読み飛ばして欲しい)。 例えばテーブルを作るときに、 mysql> CREATE DATABASE test; Query OK, 1 row affected (0.05 sec) mysql> USE test Database changed mysql> CREATE TABLE user ( name VARCHAR(255) ) CHARSET=utf8; Query OK, 0 rows affected (0.05 sec) などと 「CHARSET=utf8」 を指定すれば、 文字列を UTF-8 エンコーディングで格納する。 「CHARSET」 すなわち 「文字集合」 と、 エンコーディ

    t-murachi
    t-murachi 2009/09/14
    支援。latin1 ってば 8bits フルに使ってるからなにげに愉快なことになる罠w
  • はらぺこ日誌» ブログアーカイブ » 頼りなさげな wchar_t

    まず文字セットですが、 UTF-16LE とはリトルエンディアンの UTF-16 エンコードのことで、 Unicode を表現するためのファイル形式です。ファイル形式であるということは、すなわちファイルに保存する方法を定めた形式であるということです。それに対して、 UCS4 はあくまで Unicode そのものであり、内部データ形式として扱えるものです。 具体的に何が違うのかというと、 UTF-16 の場合は配列内の数値 1つが必ず 1文字を表現するものであることを保証しません。実際、UTF-16 ではサロゲートペアを気にする必要があり、この処理を誤ると文字境界に破綻を来して文字化けの原因を作ってしまうことになります。これに対し、 UCS4 の場合は単に 31bits 以下の文字セットであり、それより拡張されないことが保証されています (万一拡張された場合は新たに UCS8 が規定されて包

    t-murachi
    t-murachi 2009/07/25
    URI はちょっと過激すぎたかしらw
  • はらぺこ日誌» ブログアーカイブ » 制御命令は課題がいっぱい

    制御命令一覧の転載が完了しました。 otoco の制御命令は Perl 版でも実装実績がまだ無く、仕様に関しても、構想はあるんだけれども内容は埋まらないまま穴だらけ、という状態です。メタイベントの類とか、むしろ実装が容易な上にプライオリティも高そうなものが未定義のままほったらかしですね…。早いとこどうにかしないと。 すでに仕様が埋まっている制御命令にもいくつか問題があります。まず #charset 。これ、Encode.pm の仕様を前提にして書かれているので、指定できる文字セット名がちょっと豊富すぎますw。そもそもの問題として、文字セットを扱うライブラリに何を利用するのか決めないといけません (iconv にするか、nkf にするか、他のを探すか… boost にその辺やってくれるクラスがあればいいんだけどなぁ…)。 それともう一つ、#function で関数を定義するときに用いるスクリ

  • perl - use CGI; use Encode; # 非英語Webプログラミング3原則 : 404 Blog Not Found

    2009年06月23日15:30 カテゴリLightweight Languages perl - use CGI; use Encode; # 非英語Webプログラミング3原則 これは、実はPerlに限らず未だに事実だったりするのですが.... Perl でフォームデータから UTF-8語文字をとりだす方法 (プログラミングの小石・大石) UTF-8 のフォームによっておくられたデータのなかから日語文字をとりだすことは,日Perl CGI プログラマならたいてい必要になることである. ところが,その方法は意外に確立されていないようにみえる. しかし、元発言の方法は先祖帰りすぎるので。 Perlプログラマー以外にも、Webプログラマーであれば有用なentryです。 PerlでWebプログラミングする場合の三原則 QueryはCGIモジュールで処理する 文字コードはEncode

    perl - use CGI; use Encode; # 非英語Webプログラミング3原則 : 404 Blog Not Found
    t-murachi
    t-murachi 2009/06/24
    query を POST でしか受け付けたくない場合の書き方とかも追加した方がいい気がする。まぁ $q->request_method 見ればいいだけなんだけれども。