タグ

文字コードに関するsbuskのブックマーク (11)

  • 文字コード変換ミスによる文字化けパターンと想定される原因 - drk7jp

    とあるシステムでデータベースから引いてきたデータの表示が文字化けするという不具合がありました。 データベース内のデータとしては文字化けしていない状態で格納されていることはわかっていたので、どこかしらの文字変換で化けていることはわかっています。まずはどの誤変換により文字化けするのか原因切り分けのために、decode/encode の組み合わせによる文字化けパターン一覧を作りました。おかげさまでどのパターンに類するものか判別することができ、無事に改修することができました。 その話はまた別にするとして、今も昔も変わらず文字化けに悩む人は意外と多いと思います。誤変換結果一覧は原因解析の参考になると思い、記事としてまとめることにしました。 文字コード変換ミスによる文字化けパターンを可視化するプログラムと一覧表 まずは誤変換を生成する perl スクリプトです。プログラムはとっても簡単で、「文字化けで

  • CP932 → UNICODE → CP932 - ganaware’s blog

    はじめに 文字列を CP932 から UNICODE へ、UNICODE から CP932 へ変換する必要がしばしば生じますが、その変換テーブルは各々の言語やライブラリでかなり異なっています。 そこで、実際にどの程度異なっているのかをまず調査してみることにしました。 調査結果: http://dl.dropbox.com/u/1340991/cp932_roundtrip/cp932_roundtrip.html 表を作る為のソースなどまとめ: http://dl.dropbox.com/u/1340991/cp932_roundtrip/cp932_roundtrip.tgz CP932 から UNICODE 最も問題なのはパッチを当てていない libiconv で、以下の6文字の変換が一般的ではありません。(パッチ: http://www2d.biglobe.ne.jp/~msyk/s

    CP932 → UNICODE → CP932 - ganaware’s blog
  • 機種依存文字とUnicode - WebStudio

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

  • kh.log - Pythonで全角半角を正規化する方法

    « 2008.03.06のdel.icio.us Main 第137回 TOEIC 申し込み失敗 » Pythonで全角半角を正規化する方法 | インターネット上の日語を扱っていると、全角半角が統一されていない事による表記揺れをなんとかしたい場面に出くわします。半角で書かれた iPod も、全角で書かれたiPodも同じものとして扱いたいときや、あるいは単に見た目がきれいになるように、英数字は半角に、カタカナは全角にそろえたい、という場合です。 Python では setomitsさんによる zenhan.py を使うと、文字種ごとに全角半角を選択して変換することができ、除外文字も設定できるので便利です。ただ、そこまで柔軟でなくても良く、単に表記揺れがなくなれば良い、という場合も多いかと思います。その場合はPythonの標準ライブラリに含まれる unicodedata モジュールの nor

  • Develogger: Pythonで「~」をエンコードすると例外が発生

    Pythonで「~」をSJISやEUCにエンコードすると例外が発生します。 ※cp932やmbcsを使用すれば例外は発生しません。 ■検証したコード #!/usr/bin/env python # -*- coding: utf-8 -*- s = u"~" try: s.encode("shift_jis") print "shift_jis ok" except UnicodeEncodeError, e: print e try: s.encode("shift_jis_2004") print "shift_jis_2004 ok" except UnicodeEncodeError, e: print e try: s.encode("shift_jisx0213") print "shift_jisx0213 ok" except UnicodeEncodeError, e:

  • [R3]miniturbo.org - 携帯電話での文字コード対応表 まとめ#extended

    このリストを見る限り、最近の機種は殆どが対応しているようです。SO506iCがEUC-JPに対応しているのは意外でした。 各社の仕様書を見比べると、Shift JISは全社とも対応していて、DoCoMoのXHTML対応機種に限りUTF-8にも対応していることが記載されていました。また、SoftBankの携帯電話はメール及びウェブの文字コードを手動選択できるようです。各社の仕様書を以下にリンクいたしましたので、ご覧ください。 iモード対応HTMLの概要 iモード対応XHTMLの概要 EZWeb サーバ設定・文字コード指定 SoftBank Developers Support Site なお、検証への誘導をしていただいた真琴さんと、多くの機種を検証していただいたreaさん、サンプルを怪しみながらも協力してくれた僕の友人、それからわざわざコメントorトラックバックしていただいた皆々様方に深く感

  • http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-2783

  • MFSA 2006-42: UTF-8 ページで BOM を使ったクロスサイトスクリプティング

    Mozilla Foundation セキュリティアドバイザリ 2006-42 タイトルUTF-8 ページで BOM を使ったクロスサイトスクリプティング 重要度高 公開日2006/06/01 報告者Masatoshi Kimura 影響を受ける製品FirefoxThunderbirdSeaMonkey 修正済みのバージョンFirefox 1.5.0.4Thunderbird 1.5.0.4SeaMonkey 1.0.2 概要 Web ページがパーサによって解析される前に、Unicode への変換過程で UTF-8 のページからバイトオーダーマーク (BOM) が欠落してしまうことが、Masatoshi Kimura 氏によって報告されました。その結果、パーサがスクリプトタグを解析すると、Web ページのコメントモードに含まれる「scr[BOM]ipt」のように見えることか

  • ppkfなんてのを作ってみました | SiteBites Blog

    思いっきり車輪の再発明しまくりですが、必要があったのでPythonだけで日語の文字コード判別をさせてみるようなのを試作しました。 追記: 恐れ多くも Matzさんから名前について突っ込まれてしまいました。 Kanji Filter部分も作ろうかとおもってるうちに、べつに判別だけできればPython2.4以上はCJKCodecs標準だからいいか、とヘタレたということです;-P 追伸: ppkfのアーカイブはここにあります (070409) 以下説明です。同梱されているREADMEと同じ内容です。 概要 日語の文字コードを判別するためのユーティリティです。Pythonで記述されたプログラムの中から使います。 Python2,4以降、CJKCodecsの標準提供により日語の取り扱いも標準化されつつあると思いますが、多数のエンコード方式が混在し、コードと区点の対応が一対一とならない日語環境

  • Universal Encoding Detector: character encoding auto-detection in Python

    Character encoding auto-detection in Python. As smart as your browser. Open source. >>> import urllib >>> urlread = lambda url: urllib.urlopen(url).read() >>> import chardet >>> chardet.detect(urlread("http://google.cn/")) {'encoding': 'GB2312', 'confidence': 0.99} >>> chardet.detect(urlread("http://yahoo.co.jp/")) {'encoding': 'EUC-JP', 'confidence': 0.99} >>> chardet.detect(urlread("http://amazo

  • 日本語文字列コード問題まとめ

    【1】   文字列コード問題との戦い Pythonに限った話ではないのですが、 日語を取り扱うコードを書いていると やっかいなエンコーディングトラブルに遭う事は少なくないでしょう。 エンコーディングトラブルとは コンパイラ・インタプリタがソースコードを解釈できない。 画面表示が化ける。 意図した入力ができない。 エンコード・デコード時にエラーがでる。 正しいファイル名のつもりなのにファイルが見つからない。 出力させたファイルの中身が読めない。 などといった現象を基としていろんな問題を引き起こします。 問題のすべては「コード変換」に発生します。 実際の文字列が何のエンコーディングで、 渡す先が何のエンコーディングを期待しているか? それらを確認して合致させるように変換をするということが基です。 【2】   「Python語版が必要」というのは誤解 P

  • 1