タグ

UTF-8に関するbunhikoのブックマーク (11)

  • Rubyで全ての漢字を列挙する (polog)

    正しくは"UTF-8で表現できる"が接頭辞につきます。また、前提として僕はエンコードやらバイナリやらに関してはドがつく素人です。 すべての漢字を取り出す正規表現を以前読んでいて、ちょっと作りたいものがあって全ての漢字の列挙を行いたかったのでこれを参考にやってみた。 多分だけど、Rangeで範囲内の全ての漢字を取り出せるかなあと思って、まずは単純にirbで ("一".."龠").step(1){|s| puts s} ってやった所、数百文字で止まり、しかも途中からは漢字ではない??みたいなのが出力されている。おかしい。どれくらいの範囲が確保されていて、どれくらい漢字でないものが含まれているんだろう。 unpackしてバイト列に直したものを10進数に変換してみる。 >> "一".unpack('C*').map{|i| i.to_s(16)}.join => "e4b880" >

  • perl - 文字列ばらしはsplit //, $strで : 404 Blog Not Found

    2007年11月27日13:30 カテゴリLightweight Languages perl - 文字列ばらしはsplit //, $strで うーん、ここがあきまへん。 [を] 転置インデックスによる検索システムを作ってみよう! 9 my @char = ($c =~ /([\x00-\x7f]|[\xC0-\xDF][\x80-\xBF]| 10 [\xE0-\xEF][\x80-\xBF]{2}| 11 [\xF0-\xF7][\x80-\xBF]{3})/gsx); 文字列をばらして(utf8の)文字一つ一つの配列にするには、バイト列に正規表現をかますのではなく、utf8文字列にしてからそれにsplit //をかますのが一番です。単にわかりやすいだけではなく、その方がずっと高速です。以下、Benchmark。 #!/usr/local/bin/perl use strict; u

    perl - 文字列ばらしはsplit //, $strで : 404 Blog Not Found
  • 日本語文字列コード問題まとめ

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

  • Unicodeは文字集合か符号化方式か : 404 Blog Not Found

    2006年11月24日12:30 カテゴリLightweight Languages Unicodeは文字集合か符号化方式か 以下は、電脳で文字を扱う場合の基礎中の基礎なのだが、肝心の記事に重大な誤りがいくつもある。 文字コード規格の基礎:ITpro そろそろ具体的な説明に入ろう。最初にはっきりさせておく必要があるのは次の点だ。一般に「文字コード」と言う場合, 文字の集合 エンコード方法 という要素がある。この二つを区別して考えることが重要だ。もちろん大きな関連はあるのだが,ごちゃごちゃのままでは「わからなく」なる大きな要因となる。ここだ。 これによると、Unicodeは明らかに「エンコード方法」であるが、これは間違い。ここで書かれているものはUCS-2という名前のUnicodeが定めるいくつかの「エンコード方法」の一つであり、しかもUTF-16によって陳腐化した方式である。 まずUnic

    Unicodeは文字集合か符号化方式か : 404 Blog Not Found
  • [を] UTF-8 で半角カナを判定

    UTF-8 で半角カナを判定 2006-11-09-3 [Programming] PerlUTF-8 で半角カナを判定するには、 顔文字みたいな正規表現を使うと良いみたい。 なお、下記では全角になっていますが、「。」「゜」は半角です。 print if /[。-゜]/; 以下、確認スクリプト utf8hankana-test.pl。 begin 755 utf8hankana-test.pl.gz M'XL("+7C4D4``W5T9CAH86YK86YA+71E<W0N<&P`1<_)2L-@$,#Q^SS%9[Q8 ML>0J1H1"]>K!>'()M48-U"A)BP<1M.[5NN];L>[[OFM]F"IXZROX5P\._&!F MF!F8XB(]X7MZB^/JW;87DV+UF4Y]'<SEDR?YP51)O5D3+`](PK>5'_><:-SX MS7L

  • 最速インターフェース研究会 :: SafariのAjaxの文字化けをクライアント側だけで対応するバッドノウハウ

    SafariでXMLHttpRequestのresponseTextが文字化けするという話。 http://blog.33rpm.jp/garbled-on-safari.html 最近のバージョンだとcontent-typeがちゃんとしてれば化けなかったような記憶があるけど、まあともかくとして、Safariで文字化けするのはJavaScript側だけで対処することができたりする。 http://kawa.at.webry.info/200511/article_9.html これ読んでほんとかよ、って感じだったんだけど案外役に立った。livedoor Readerで使われてたり。 実際に使われてるコードはこんなの。 if(browser.isKHTML){ ajax.filter.add(function(t){ var esc = escape(t); return(esc.index

  • PythonEncode - MoriMoin

    こんなエラーがおきたとき >>> print hoge Traceback (most recent call last): File "<stdin>", line 1, in ? UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128) デフォルトで設定されてる文字コードを変えると解決します。 で、その設定のしかたですが、 1. 環境変数LANG に端末が扱うエンコードを設定する。(たぶん LANG=ja_JP.utf-8 か、 ja_JP.eucJP のどちらかでいけるとおもいます) 2. 1は端末に出力(ただprintする時)するときだけに対応するので、 hoge = file(’hoge’, ’w’) print >>hoge, u

  • ちょっとしたメモ - W3Cの新しいXSLTサービスとGRDDL

    W3CのオンラインXSLTサービスが新しくなって、文字コードの扱いが改善された。以前はUTF-8以外の文字コードは即座にJavaの例外を引き起こしていたのだが、今回はShift_JISでもEUC-JPでもちゃんと処理できている。これによって、日語XHTMLページからGRDDLでRDFを容易に抽出できるようになる、はずだ。 XHTML文書からRDFを抽出するには、たとえば当サイトの汎用XSLT(xh2rdf.xsl)をこのオンラインサービスで適用すればよい。整形式を満たしている文書なら、タイトルや見出しがメタデータとして取り出され、要約やキーワード、作者の連絡先があればそれも含めたRDFが得られる。 XHTML: さらに、head要素のプロファイルとしてhttp://purl.org/net/ns/metaprofを記述していれば、W3CのGRDDL demoページから直接RDF抽出を行う

  • YAPC::Asia::2006-&gt;new(Slide =&gt; Dan::Kogai)

    Perl 5.8 and Unicode: Myths, Facts and Changes by Dan Kogai ↓"translate"? What the heck is that? It doesn't make sense! 日語 2.0 What’s Unicode? Unicode provides a unique number for every character no matter what the platform, no matter what the program, no matter what the language. Why Unicode? Whipaptitude with Manipulexity Because we want the easy jobs should be easy without making the hard j

  • すべての漢字を取り出す正規表現 - totonのブログ

    http://www.unixuser.org/~euske/doc/python/sample.py.html # 日語トークンを切り出すための正規表現。 JP_TOKEN = re.compile(u"[一-龠]+|[ぁ-ん]+|[ァ-ヴ]+|[a-zA-Z0-9]+") http://www.ascii.co.jp/pb/ascii/archive/aftercare/1999.html [亜-煕]はJIS漢字を検出するときに使う正規表現になります。 文中で触れている「一太郎 Lite2」の正規表現はUnicode仕様なので,すべての漢字を検出するには,[一-龠]を使用してください(龠は音読みで「ヤク」,訓読みで「ふえ」,Unicodeでは「9FA0」にあたります)。 追記 ※「すべての漢字を取り出す正規表現」については、id:toton:20051105 に記事を追加しました。

    すべての漢字を取り出す正規表現 - totonのブログ
  • Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法

    [Home] [Setting up Mac OS X] [Python]: [ファイルを読む] 日語を使う Pythonで日語を使う Python 2.4以降では、標準で日語を扱うことができます。 PythonのソースコードをUTF-8で書くには 日語を扱うPythonのスクリプトの中では、UTF-8の文字コードを使うのが 楽です。 Mac OS Xのターミナルで日語を扱う場合は、 ここの「4. Terminalの設定を変える」の 指示に従ってください。 以下、ソースコードの簡単な例を示します。 #!/usr/bin/env python # -*- coding: utf-8 -*- import re jtext = u'子が隠れんぼをしています' print 'jtext has', len(jtext), 'Japanese characters.' if re.se

  • 1