タグ

charcodeに関するmitsuki_engawaのブックマーク (39)

  • 円記号問題とウェブブラウザ - はてなるせだいあり

    起源 円記号問題の始まりは1960年代にまで遡ります。1967 年に文字コード最初の国際規格である ISO R 646 が制定されましたが、その規格では 0x5C をはじめとして一部の文字が置き換え可能になっていました。アメリカの制定した ASCII では 0x5C に対して REVERSE SOLIDUS を割り当てました。一方、日版である JIS X 0201 では YEN SIGN を割り当てました。 問題の拡大 7bit では扱いきれない文字を扱うため、世界で ISO 646 系のコードを拡張した文字コードが生まれました。日ではシフトJIS、日語 EUC、いわゆる JIS コードの三種類の文字コードが現れ、それぞれに多くの亜種が生まれました。では、それぞれの文字コードの 7bit 領域は ASCII と JIS X 0201 のどちらだったのでしょうか。 日語 EUC 日

    円記号問題とウェブブラウザ - はてなるせだいあり
  • 漢字1文字が最大8バイト、Unicodeの「IVS」とは?

    「漢字1文字は2バイト」という常識が、大きく変わろうとしている。現在改正中の「常用漢字表」に対応するためには、Unicodeの4バイト文字を使用する必要があるが、それだけでは済まない恐れがある。今後、戸籍や住民基台帳で使われている文字がUnicodeに追加されると、漢字1文字が最大8バイトになるかもしれない。文字コードに詳しい京都大学人文科学研究所附属東アジア人文情報学研究センターの安岡孝一准教授が、問題の核心を解説する。(日経コンピュータ) 先日公開した『新常用漢字表が迫るUnicode移行、「シフトJIS」では対応不可能』の読者から、「今後のシステムでは漢字1文字を最大4バイトで処理すればいいのか」という質問を頂いた。実は、UTF-8あるいはUTF-16で漢字を表す場合、最新のUnicodeにおけるIVS(Ideographic Variation Sequence)を考慮すると、漢

    漢字1文字が最大8バイト、Unicodeの「IVS」とは?
    mitsuki_engawa
    mitsuki_engawa 2010/01/29
    冒頭の2バイトうんぬんは編集の文章か。
  • 二重エンコードの話についての補足 - *「ふっかつのじゅもんがちがいます。」withぬこ

    AJITOで酒を飲みながらid:nTeTsと昨日書いた記事についてしゃべっていて、id:nTeTsがこの問題をPerl文字列の内部表現やUTF8フラグに関わる問題と認識している節があった。それは単に間違っていて、この問題はPerl固有ではないしPerl文字列の内部表現などは一切関係ないのだが、まあ混乱しても無理はないとも思うのでその辺について補足してみたい。なお僕はPerl5.8からPerlを使い始めたので、当の歴史的な経緯などは知らない。現状の仕様からリバースエンジニアリングして歴史的経緯を推測したにすぎないので、誤りが含まれる可能性は指摘しておく。 Encode::encodeとEncode::decodeのシグネチャを仮想的に型付きで表現するとしたら、理想的には次のようになっているべきである。 //decodeはバイナリ(:byte[])から内部表現(:String)への写像 St

    二重エンコードの話についての補足 - *「ふっかつのじゅもんがちがいます。」withぬこ
  • Perlで日本語文字列が文字化けしてるかどうか推測する&修復する - *「ふっかつのじゅもんがちがいます。」withぬこ

    ちょっと最近Buzzurlに自作スクリプトか何かで、大量の二重エンコード文字列を含むブックマークが投稿されたので対策のために調べてみたことのまとめ。<追記>id:miyagawaさんのブクマで Encode::DoubleEncodedUTF8 というモジュールを教えてもらいました。調べたら作者もid:miyagawaさん。二重エンコード是正にはこちらを使うようにしましょう。 でもこれ"二重エンコード perl utf8"とかでぐぐったけど見つからなかった…。id:miyagawaさんのブログとかもっと検索に引っかかるべきだと思うのだが。 PerlでUTF8文字列を使うときの原則 PerlでUTF8文字列を扱うならば、Encodeの神であるところのid:dankogaiが何度も何度も口をすっぱくして言っている次の原則に従わなければならない。そうしないとすごく不愉快な目にあう。 入り口で d

    Perlで日本語文字列が文字化けしてるかどうか推測する&修復する - *「ふっかつのじゅもんがちがいます。」withぬこ
  • C/C++に文字エンコーディングバリデーション機能がないって、ほんと? - kazuhoのメモ置き場

    通りすがり (2009-09-16 18:09) > PHP以外の言語は「(略)」のに対し ここに挙げられている言語がWebアプリで使われる全ての言語ではない。 例えば、CやC++にはない。付け足せば、PHPPerlなどのCモジュール内部で起こった不正な文字はスルーされうる。 よって、「PerlJava、.NETRubyPHPの中では」と書けば筋は通るが、「PHP以外では」は誤り。 そしてそんなことを、PHPの(脆弱性撲滅に注力している)開発者に言ったら、喧嘩を売られたと受け止められて当然。 PHP以外では: 既にあたり前になりつつある文字エンコーディングバリデーション - 徳丸浩の日記(2009-09-14) というコメントが気になった。 C言語にある文字コード変換機能って言ったら mbtowc だと思うけど、mbtowc は無効なバイト列を受け取ると EILSEQ を返すことに

    C/C++に文字エンコーディングバリデーション機能がないって、ほんと? - kazuhoのメモ置き場
  • PHP以外では: 既にあたり前になりつつある文字エンコーディングバリデーション - 徳丸浩の日記(2009-09-14)

    _既にあたり前になりつつある文字エンコーディングバリデーション 大垣靖男さんの日記「何故かあたり前にならない文字エンコーディングバリデーション」に端を発して、入力データなどの文字エンコーディングの妥当性チェックをどう行うかが議論になっています。チェック自体が必要であることは皆さん同意のようですが、 チェック担当はアプリケーションか、基盤ソフト(言語、フレームワークなど)か 入力・処理・出力のどこでチェックするのか という点で、さまざまな意見が寄せられています。大垣さん自身は、アプリケーションが入力時点でチェックすべきと主張されています。これに対して、いや基盤ソフトでチェックすべきだとか、文字列を「使うとき」にチェックすべきだという意見が出ています。 たとえば、id:ikepyonの日記「[セキュリティ]何故かあたり前にならない文字エンコーディングバリデーション」では、このチェックは基盤ソフ

  • Validating Strings :: 2009-09-12 - はてなるせだいあり

    文字エンコーディングバリデーション を受けて。 この辺の話ははせがわさんがお詳しいので、ご存じでない方はまず「当は怖い文字コードの話」をお読みください。 不正なバイト列を用いた攻撃について さて、大垣さんの記事は 不正なバイト列をWebブラウザに送ると攻撃が可能となる場合があるので、Webアプリケーション側で対策が必要 不正なバイト列のチェックには文字エンコーディング変換を用いる まだ対策が不十分な事が多いので、みんな対策しようね HTTP charset パラメタの勧め *1 というお話。「validation」や「不正な」の対象が「文字エンコーディング」になっているのが気になります。不正なのはバイト列ですよね。invalid byte sequence を用いた攻撃の話です。 変換による検査 さて、これらの記事では「文字エンコーディング変換を利用したバリデーションをする方法」が不正な

    Validating Strings :: 2009-09-12 - はてなるせだいあり
  • Unicode - JISマークは一文字! : 404 Blog Not Found

    2009年08月07日15:00 カテゴリCode Unicode - JISマークは一文字! 私もびっくりしたのですが、事実です。 まずは以下をご覧下さい。 〄は一文字です(U+3004)。 フォントまわりをカスタマイズしていないIEでも表示を確認できました。UbuntuのFirefoxでは空白でしたが。 なぜ気がついたかと言えば、unicode@unicode.org にこんな書き込みが登場したからです。 At http://en.wikipedia.org/wiki/Japanese_Industrial_Standards, a new symbol for JIS is shown and discussed. Will there be a new character in the Standard? (Not a new glyph in the same codepoint

    Unicode - JISマークは一文字! : 404 Blog Not Found
  • Web上の日本語EUCデータに指定すべきエンコーディングは何か - なるせにっき

    語EUCは当初、G0にUS-ASCII、G1にJIS X0208-1990、G2にHalf Width Katakana、G3にユーザ定義文字が定義されていました。その後、これを拡張しつつ多くの亜種が作られました。まずはこの亜種のうちの主要なものを挙げます。 まず、日語EUCの国家標準は結局作られませんでしたが*1、IANA Character Set Registry*2に登録されているEUC-JP*3(以下、この仕様をeucJPと呼ぶ)は「標準」にかなり近いものということができるでしょう。これはG0にUS-ASCII、G1にJIS X0208-1990、G2にHalf Width Katakana、G3にJIS X0212-1990を指定しています。つまり、このエンコーディングはJIS X 0212を収録しているのが特徴です。 次に、eucJP-open系があります。このエンコー

    Web上の日本語EUCデータに指定すべきエンコーディングは何か - なるせにっき
    mitsuki_engawa
    mitsuki_engawa 2009/07/23
    「Web上の日本語EUCデータに指定すべきエンコーディングは何か」
  • 講習会「文字集合と文字エンコーディング」について - はてなるせだいあり

    なかなか豪快な記事(講習会「文字集合と文字エンコーディング」を開催しました — ディノオープンラボラトリ)を見つけたので、ツッコミを書いてみることにしました。ツッコミどころはかなり多いんですが、まぁ世の中の文字コードがらみの記事なんて大半がこんなものです。 「文字コード」という語は「正しい」か スライドの5ページ目は、「文字コード」という言い方は間違いという趣旨に見えますが、そうでもありません。 というのも、文字コードの世界は難しい世界です。複数のレイヤー、複数の国、複数のベンダーにまたがっているものが簡単になるはずがありません。しかし必須要素であるために、十分な知識を持たないまま、または必要性に駆られて十分な知見が集まる前に実装を行ってしまうこともしばしばあります。このことがさらに「歴史的経緯」としてさらに文字コードを難しくしています。例えばHTTPのcharsetパラメータは、char

    講習会「文字集合と文字エンコーディング」について - はてなるせだいあり
    mitsuki_engawa
    mitsuki_engawa 2009/05/13
    「講習会『文字集合と文字エンコーディング』について」へのつっこみ。
  • 講習会「文字集合と文字エンコーディング」を開催しました — ディノオープンラボラトリ

    「文字集合と文字エンコーディング」というタイトルで、経験2〜3年目の人をターゲットに社内勉強会を開催しました。文字集合という単語を知っている必要はないですけど、少なくともUTF-8とShift_JISとでは扱える文字の種類数が違うことだけは伝えたかったので、その意味では目標が達成できたと思っています。 まとめ 文字集合とは、扱える文字の集合 JIS X 0208なら6000文字くらいの日語の文字 UCS-2なら60000文字くらいの世界中の主要な文字 文字エンコーディングとは、文字の集合をバイト列に直す方式 Shift_JISはJIS X 0208(など)を1〜2バイトにする UTF-8はUCS-2を1〜3バイトにする 文字エンコーディング関連のツールを使いこなそう nkfやlvを使いこなそう 日語を探すならlgrep 最終兵器:hexjaで16進ダンプ ムービー

    mitsuki_engawa
    mitsuki_engawa 2009/04/22
    "UCS-4 can now be taken effectively as an alias for the Unicode encoding form UTF-32, except"略、らしい。http://www.unicode.org/versions/Unicode5.0.0/appC.pdf
  • 第3回 US-ASCIIによるクロスサイトスクリプティング | gihyo.jp

    今回は、US-ASCIIによるクロスサイトスクリプティング(XSS)という話題について紹介します。 前回までで説明したUTF-7によるXSSと同様に、攻撃者はUS-ASCIIという文字コードを巧みに利用することで、IEを対象にXSSを発生させることができます。US-ASCIIによるXSSは、UTF-7によるXSSと類似点も多いため、前回までの説明も併せて読んでおくとよいでしょう。 US-ASCIIによるXSSについても先に対策を書いてしまうと、UTF-7のときと同様にHTTPレスポンスヘッダにて Content-Type: text/html; charset=UTF-8 Content-Type: text/html; charset=Shift_JIS Content-Type: text/html; charset=EUC-JP のいずれかを出力するという原則を守ることで、完全に攻撃

    第3回 US-ASCIIによるクロスサイトスクリプティング | gihyo.jp
  • そろそろUnicodeについて一言いっておくか - 未来のいつか/hyoshiokの日記

    文字コードの標準化について日記を書いたのだが、内容がいまいちだったのでボツにして気を取り直してUnicodeについて一言いっておくことにする。先日、といっても昨年(2008年)の10月なんだけど、その中でちょと文字コードの標準化について話をしている。*1 もう1つ自分の経験としてあるのが、漢字の文字コードがあるんですけど、番号で言うとJIS X 0208とか0212とか規格の番号で皆言うわけなんですけど、実は1988年にその日語の文字コードの改正の委員会にいたんですね。 その当時、私は 30歳ぐらいなんですけど、「富士通」とか「日立」とか「NEC」の部長さんぐらいの偉い人たちが来てて、私なんか外資系で且つ30前後のぺーぺーだから、全然格下なんですよ。 そういうところで議論の主軸を担ってるのは、「富士通」「日立」「NEC」「日IBM」「東芝」「沖」、外資でいえば「ユニシス」とかの錚々たる

    そろそろUnicodeについて一言いっておくか - 未来のいつか/hyoshiokの日記
    mitsuki_engawa
    mitsuki_engawa 2009/04/20
    欧米でも反Unicodeな意見はあったようだし、あちらもあちらで「閉じこもって」るのは今でも変わらないし、当時は今以上に理解されてなかった事情も無視できないとは思う。
  • 第4回 Ruby M17N 事始め:文字コード編 | gihyo.jp

    はじめに 今回は文字列を扱う際には忘れてはならない文字コードについて、日人が知っておくべきエンコーディングを中心に解説していきます。 US-ASCII ASCIIは、ASA(American Standards Association、のちにUSASIを経てANSI)によって、1963年6月17日にASA X3.4-1963として制定され、1967年7月7日にUSASI(United States of America Standards Institute、ASAから1966年8月24日に改組)によってUSAS X3.4-1967へと改訂されてほぼ現在の形となりました。 その後の多くの文字コードがASCIIのスーパーセットとして作られたため、ASCIIは共通のサブセットとして特別な位置に置かれるようになりました。RubyでもASCIIに含まれる文字のみで構成されるStringは、ASC

    第4回 Ruby M17N 事始め:文字コード編 | gihyo.jp
  • 私のマイコン遍歴、日本のパソコン30年史、その1 - Windows Live

    Sorry, your entry can't be deleted right now. Please try again later. 私がその昔、秋葉原少年だった頃(今のアキバ系とちょっと違うとは思うのだけど、まぁ普通の人から見ると同類項だったのかな?)秋葉原にはアスターインターナショナル、コンピュータLab、若松通商、ビットイン、田通商、そして新宿のムーンベース、タンディ・ラジオシャック、御苑前のアスターインターナショナル店などに当時のマイコン少年は毎日たむろしていたのでした。 当時はTK-80、KIM-1、SCAMP、HitachiやL-Kit16などの10万円ほどする、いわゆるワンボードマイコンが全盛期でありました。Altair、IMSAI、SOL-20、Horizon North Star、クロメムコといったS-100バスのコンピュータはテレタイプに紙テープで操作するもの

    mitsuki_engawa
    mitsuki_engawa 2009/03/23
    シフトJISの発祥
  • ケータイの絵文字はどこまでズレるのか - 帰ってきた💫Unicode刑事〔デカ〕リターンズ

    ケータイの絵文字について、各キャリアの「他社用変換表」を見ると、ゲタにするよりはマシだろうということなのだろうが、けっこう強引というか、感覚的な対応も多く、ラウンドトリップの互換性は保証されない。 つまり、絵文字入りのメールを他社ケータイに送信し、さらにそれを引用して送信するというプロセスを繰り返した場合、伝言ゲームのように少しずつ絵文字の意味がズレていく可能性がある。 というわけで下図は、適当に拾った例で、絵文字がどんなふうに変化していくのかシミュレートしたもの(16進数はShift-JISコード)。文脈によっては、キケンなニュアンスに変わったりすることもあるかも。

    ケータイの絵文字はどこまでズレるのか - 帰ってきた💫Unicode刑事〔デカ〕リターンズ
    mitsuki_engawa
    mitsuki_engawa 2009/03/12
    笑えないけど笑うしかない。
  • 2009-03-08

    のざきさんの 「AT&TがEUC(Extended UNIX Code)をUNIXの文字符号化手法として使うようになったのって正確にはいつからなんですかね」 について。FreeBSD 4.6.2 からのわたしが解説しますよ。 結論からいえば 1985 年で、この年に System V Release 2*1 に対する拡張として、Japanese Application Environment がリリースされたようです (要公式リリース資料)。ただし、それが「EUC」という名前だったかについては今のところ不明。 その前段階として件の日語UNIX システム諮問委員会では当然議論があったわけですが、その一員にAT&T UNIX Pacificがいる。ゆえに、1984年以前から実装は開始されていて、委員会へ開示されたタイミングである1984年がそのコードに残っているのではないか、と推測してみるわ

    2009-03-08
    mitsuki_engawa
    mitsuki_engawa 2009/03/09
    「いつ誰がEUCを作ったか」
  • 文字コードとセキュリティ

    Loading...

  • UTF-8小話 - Plan9日記

    UTF-8Wikipediaに書かれている通り、 当初は、Plan 9で用いるエンコードとしてベル研究所で考案された。 ものだけど、最近古屋で見つけた「インターネットヒストリー」の村井純先生のあとがきに気になる記述があった。 ちょっと長くなるけど引用する。 かなり昔の話だが、ベル研のUNIXを作ったオペレーティングシステムを担当していたグループにオペレーティングシステムについての講演を頼まれたときに「日語」の話をしたことがある。正直にいうと、ケン・トンプソンやデニスリッチなど、コンピュータ界のノーベル賞といわれるチューリング賞をとった錚々たるメンバーを前にして、当時「ただの研究者」であった自分がオペレーティングシステムについて何を話したらよいのだろうと悩んでしまった。結局開き直って話すことにしたのが漢字の問題だったわけだ。しかし、このときの講演の内容が、彼らにとっては1バイト1文字と

    UTF-8小話 - Plan9日記
    mitsuki_engawa
    mitsuki_engawa 2008/10/06
    UTF-8と村井先生のもしかしたら?な。
  • 使いこなそうユニコード

    UCSとUTFとは? [2003-11-11] Unicode正規化とは [2008-01-14] Unicodeに関するメモ [2002-06-15] JIS X 0213とUCS/Unicodeとの対応について [2006-12-30] Unicode文字の表示例 (Unicode 4.1.0) [2005-04-23] JIS/SHIFTJISとWINDOWS/CP932との相違 [2001-07-08] JIS X 0208とUnicodeとの対応表/ZIP版 [2002-06-01] Shift_JIS-2004 (JIS X 0213:2004)とUnicode 3.2.0の対応表/ZIP版 [2007-01-03] [同じくShift_JIS-2004 (JIS X 0213:2004)とUnicode 3.2.0の対応表/非圧縮テキスト] ・JIS X 0213:2000