タグ

unicodeに関するtakaesuのブックマーク (14)

  • UTF-8からSJISに変換する時にはShift-JIS系エンコードの種類だけじゃなくてUNICODE正規化も気にしないとダメという話

    UTF-8からSJISに変換する時にはShift-JIS系エンコードの種類だけじゃなくてUNICODE正規化も気にしないとダメという話 利用シーン UTF-8で記述されたテキストをShift-JISエンコードに変換する機会はあります。 UNICODEで表現できる文字の種類の方がShift-JISに比べて圧倒的に広いのですべての文字が変換できるわけではありませんが、「これは変換できてよかろう」というものまでこぼれ落ちるケースは多数あります。 以下こぼれ落ちる例とその対応を示します。 サンプルコード まずはサンプルコード。 rubyで記述していますが、原理はどの言語でも同じです。 str = "あ~あ①髙島屋パバぱ" sjis = str.encode(Encoding::Shift_JIS, :invalid => :replace, :undef => :replace) File.

    UTF-8からSJISに変換する時にはShift-JIS系エンコードの種類だけじゃなくてUNICODE正規化も気にしないとダメという話
  • Unicodeの文字プロパティを指定した正規表現をみてみる(ECMAScript2018) - TES Blog

    はじめに Unicodeは、世界で使われる文字を利用できるようにすることを目的としています。 そのため、ラテン文字はもちろん、漢字、ハングル、キリル文字、タイ文字、(なんと!)絵文字までもがコード化されています。 一方、JavaScript(ECMAScript2018)ではUnicodeの文字プロパティにマッチングする正規表現の書き方が取り入れられます。 関連:https://github.com/tc39/proposal-regexp-unicode-property-escapes Unicodeの文字プロパティとは、Unicodeの規格で定められた各コードポイントの属性のことです。 まず簡単に見せると、以下のようなことができるようになります。 // 絵文字が含まれているかチェックする /\p{Emoji}/u.test("😃"); // → true /\p{Emoji}/u.

    Unicodeの文字プロパティを指定した正規表現をみてみる(ECMAScript2018) - TES Blog
  • Unicode 文字プロパティ

    Unicode 文字プロパティ PHP 5.1.0 以降、UTF-8 モード を設定した場合に、 一般的な文字タイプにマッチする新たなエスケープシーケンスが 3 つ追加されました。 \p{xx} xx プロパティを持つ文字 \P{xx} xx プロパティを持たない文字 \X 拡張 Unicode シーケンス ここで xx で表されているプロパティ名は、Unicode で 一般カテゴリプロパティ (general category properties) として規定されているものに なります。すべての文字は、いずれかひとつのプロパティを持ちます。 プロパティは、2 文字の略語で表されます。Perl と同じく、 開き波カッコとプロパティ名との間にハット文字を記述することで否定を指定できます。 たとえば、\p{^Lu} は \P{Lu} と同じです。 \p もしくは \P の後に、一文字だけを記

  • Unicode一覧表

    Unicode(UTF-8)の文字コード表を出力します。区分名に「*」が付いているものは合成用文字です。 表示: 【使い方】 左肩の区分メニューをクリックすると、その区分にある文字を一覧表で表示します。 一覧表の文字やコード番号をクリックすることで、上記フォームに文字が入力表示されます。 様々な機器で見比べることでフォントの違いを比較することが出来ます。 ブラウザの設定や、OSに組み込まれたフォントの仕様によって表示される文字が異なります。 文字コードを調べたいときは、フォームに文字を入力し、検査ボタンを押してください。 コード表の右上にあるURLをクリックするとURLの後ろに#で始まるハッシュがつきます。そのURLをブックマークすることで、表示の区分を直接開くことが出来ます。 【ご注意】 全コードの出力はかなり大きな表となるため、ブラウザの動作が遅くなったり、動かなくなる場合があります。

  • JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io

    Intro textarea などに入力された文字数を、 JS で数えたい場合がある。 ここで .length を数えるだけではダメな理由は、文字コードや JS の内部表現の話を理解する必要がある。 多言語や絵文字対応なども踏まえた上で、どう処理するべきなのか。 それ自体は枯れた話題ではあるが、近年 ECMAScript に追加された機能などを交えて解説する。 なお、文字コードの仕組みを詳解すること自体が目的では無いため、 BOM, UCS-2, Endian, 歴史的経緯など、この手の話題につき物な話の一部は省くこととする。 1 文字とは何か Unicode は全ての文字に ID を振ることを目的としている。 例えば 😭 (loudly crying face) なら 0x1F62D だ。 1 つの文字に 1 つの ID が割り当てられているのだから、文字の数を数える場合は、この ID

    JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io
  • Emoji unicode characters for use on the web

    This page is historical: For a fuller and more up-to-date list of Emoji codepoints, see Unicode's Full Emoji List. These tables are built from Unicode's EmojiSources.txt. The additional sections refer to symbols that have no mapping to Japanese mobile carriers. Back to top 1. Emoticons ( 1F601 - 1F64F ) Native [1] Apple [2] Android [3] Android [3] Symbola [4] Twitter [5] Unicode Bytes (UTF-8) Desc

    Emoji unicode characters for use on the web
    takaesu
    takaesu 2016/11/01
    絵文字のUnicodeテーブル、Unicodeのコードポイントがわかる
  • PHP: Unicode 文字プロパティ - Manual

    Unicode 文字プロパティ PHP 5.1.0 以降、UTF-8 モード を設定した場合に、 一般的な文字タイプにマッチする新たなエスケープシーケンスが 3 つ追加されました。 \p{xx} xx プロパティを持つ文字 \P{xx} xx プロパティを持たない文字 \X 拡張 Unicode シーケンス ここで xx で表されているプロパティ名は、Unicode で 一般カテゴリプロパティ (general category properties) として規定されているものに なります。すべての文字は、いずれかひとつのプロパティを持ちます。 プロパティは、2 文字の略語で表されます。Perl と同じく、 開き波カッコとプロパティ名との間にハット文字を記述することで否定を指定できます。 たとえば、\p{^Lu} は \P{Lu} と同じです。 \p もしくは \P の後に、一文字だけを記

  • 漢数字が数字順にソートされない理由を調べてみた - give IT a try

    はじめに:「なぜ漢数字は数字順に並ばない!?」 先日、こんなツイートをしたところ、結構たくさんの人にリツイートされました。(執筆時点で50件以上) 「漢数字はソートしても数字順に並ばない」という事実を生まれて初めて知った。まさかのサプライズ。 pic.twitter.com/Eqx3ltIfHs— Junichi Ito (伊藤淳一) (@jnchito) 2014年11月27日 「なぜ漢数字は数字順に並ばないのか」という問いに対して、表面的な回答をするなら「数字順に並ばないのは、数字の大きさではなく文字コード順でソートされているから」ということになります。 いや、もちろんそれはわかってるんです。 問題は「そもそもなんで数字順に文字コードを振らなかったの!?」ということです。 感覚的には「一郎、二郎、三郎」って並んでほしいじゃないですか。でも、プログラム上でソートすると「一郎、三郎、二郎」

    漢数字が数字順にソートされない理由を調べてみた - give IT a try
    takaesu
    takaesu 2015/04/14
    ソート順
  • 機種依存文字とUnicode - WebStudio

    導入 機種依存文字と呼ばれる文字があります。 例えばWindowsでは、 大文字のローマ数字(ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ)、 小文字のローマ数字(ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ)、 丸囲み数字(①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳)、 丸囲み文字(㊤㊥㊦㊧㊨)、 カタカナ表記の単位(㍉㍍㌔㌘㌧㌦㍑㌫㌢)、 単位記号(㎝㎏㎡)、 複数のアルファベットを合成した文字(㏍℡№)、 元号(㍻㍼㍽㍾)、 会社名等で用いられる括弧囲み文字(㈱㈲㈹)等が機種依存文字と呼ばれています。 機種依存文字は一般的に、異機種間でデータの交換を行った場合、 例えばWindowsで作成したテキストファイルをMacintoshで表示した場合に文字化けしてしまうので、 これら異機種でデータ交換することを前提としたインターネットでは利用するべきではないと言われています。 しかし、これらは機種依存文字と呼ばれているものの、 その意味はあ

  • ruby1.9でBOM付きutf-8のファイルの内容をShift-JISに変換する

    utf-8のファイルの中身をShift-JISに変更しようと思ったらエラーが出たのです。 以下のような感じを実行しようとしたら、 aaa = open("aaa.csv").read p aaa.encode("cp932") 以下のようなエラーが出てしまったのです。 in `encode': U+FEFF from UTF-8 to Windows-31J (Encoding::UndefinedConversionError) どうやら変更しようとしたファイルは、もBOM付きutf-8というものだったようです。 ちなみにBOMとは、バイト順マーク(Byte Order Mark)というもののようで、文書ファイルの先頭に付ける EF BB BF という3バイトのバイナリデータのことのようです。ファイルの文字コードがUTF-8であることを明示するために付けることもあるようです。 で、エラー

    takaesu
    takaesu 2015/02/11
    Bomを削除する方法
  • UTF-8のBOMの削除でハマる

    cles::blog 平常心是道 blogs: cles::blog NP_cles() « bashで多重起動を防止する(その2) :: DoS 攻撃の判断基準を IPA が策定へ » 2010/11/29 UTF-8のBOMの削除でハマる  java  ruby  charset  regex 257 2へぇ XalanでXMLをXSL変換するプログラムを書いたら、そのうちの1つのXMLが下記のエラーを吐いて変換できなくてハマってしまいました。 Caused by: javax.xml.transform.TransformerException: com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: An invalid XML character (Unicode: 0xfffe) was found in t

    UTF-8のBOMの削除でハマる
  • UTF-8にもいろいろある - ザリガニが見ていた...。

    前回からの続き。 改行コードの違いを体感してみる - ザリガニが見ていた...。 文字エンコードとロケールを体感する - ザリガニが見ていた...。 改行コードの違いも知った。文字コードとロケール、ターミナルの言語環境との関係も知った。これで文字にまつわる悩みとはおさらばできると思ったら、まだダメだった...。 実験環境 OSX 10.8 Mountain Lion以前((OSX 10.9 Mavericksでは、Mac仕様なNFDのUTF-8を表示しようとするとエラーになってしまったため、10.8以前の環境で実験した。Assertion failed: (width > 0), function conv_c, file /SourceCache/shell_cmds/shell_cmds-175/hexdump/conv.c, line 137. ** ** Abort trap: 6

    UTF-8にもいろいろある - ザリガニが見ていた...。
  • Ruby にて文字と Unicode コードポイントの相互変換を行う - vivid memo

    Unicode のコードポイントを指定して文字を得たり、逆にある文字のコードポイントを調べたり、ということをする機会は結構多いと思います。 が、Ruby でそれをやる方法をぐぐってもあまり上位に情報が出てこないなー、と思ったので簡単にまとめておきます。 Unicode コードポイントとは そもそも Unicode コードポイントとは何か。 Unicode というのは世界中の文字が集められた文字集合であり、Unicode に収録されている文字には順番に番号が振られています。 この番号のことをコードポイントといいます。 あるコードポイントが指す文字を表現するときに "U+" という文字の後ろに 16 進数表記のコードポイントを書いて表すことがあります。 例えば、コードポイント 0x3041 が指す文字 (ひらがなの 「あ」) を U+3041 と書いて表します。 各文字とコードポイントの関係は

    Ruby にて文字と Unicode コードポイントの相互変換を行う - vivid memo
    takaesu
    takaesu 2014/06/25
    コードポイントの解説など含め、まとめられていてとてもわかりやすい
  • 文字コード表(Unicode UTF-8 UTF-16) [7000/21420] - [技術資料 + 技術資料] ぺんたん info

    ユニコードにはいくつかの種類があり、最もよく使用されるのがUTF-8とUTF-16です。 UTF-8の日語で使用されるものは、半角文字は1バイト、全角文字は3バイト(一部2バイト)で表されます。 UTF-16の日語で使用されるものは、半角文字も全角文字も2バイトで表されます。 UTF-8は、全角文字が3バイトで表記されるため、他のコードで記載したファイルに比べ、容量が大きくなります。 このページにある全角文字は、21420文字です。 Unicodeは漢字を画数の少ない『一』から、画数順になっているのに対し、 それ以外の文字コードは50音順の『亜』から始まっています。 UTC(Unicode Technical Committee)の定義したUnicode文字のブロックの範囲は以下です。 しかし漢字の中には『F9xx』『FAxx』のものもわずかにあります。 文字の種類ブロックの範囲(16

  • 1