タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Programmingとcharacter_encodingとprogrammingに関するpipeheadのブックマーク (62)

  • Perl 5.8.X の use encoding 'shiftjis' の副作用

    Perl 5.8.X 以降で、プログラムの先頭で use encoding 'shiftjis'; と宣言すると… 標準入出力(STDIN, STDOUT)が :encoding(shiftjis)になる ソースファイル中の文字列が実行前に UTF-8に変換される ここまでは perldoc encoding とするとEUC-JPを例に英語で解説されている。 次のプログラムをテキストエディタで入力してShift-JISコードで保存して実行してみるとわかりやすい。 use encoding "shiftjis"; use Data::Dump qw/dump/; print "1:","\x{8868}","\n"; print "2:","\x95\x5C","\n"; print "3:",dump("表"),"\n"; 実行すると次のような結果になる。 1:表 2:表 3:"\x{88

  • WindowsのShift-JIS環境でjperl から perl 5.8.X への移植

    わりとよく使っているらしいWindows 環境 のjperl(ActivePerl 5.005へのパッチか?) のプログラムが動かないといわれたので、ActivePerl 5.8.X で動くように修正した。 プログラムの内容はShift-JISのテキストファイルを特定の形式に変更するもの。プログラムの内容はできるだけ修正したくないので、ソースファイルを UTF-8 に変更しプログラムの先頭に次の行を追加した。 use utf8; use open IO => ":encoding(cp932)", ":std"; つまり、1行めでソースコードは utf8であることを明示。2行目で機種依存コードを含む Shift-JISコードファイルの入出力を行い、ついでに標準入出力も Shift-JISに設定したということ。 これで処理すべきファイル8個のファイルのうち7個までは正常に処理できた。 異常の

  • Perl の多言語処理 -- Perl ヒント集 (ja)

    エンコードの処理の基 Perl 5.8 以降,テキストの処理が UTF-8 (Unicode の変換形式のひとつ) を軸におこなわれるようになりました。Shift JIS や EUC-JP での処理が一般的な日語を Perl で扱う場合,エンコードを意識したプログラミングをおこなうことが必要になります。具体的には,Perl でエンコードを意識する必要のあるのは以下の箇所です。 スクリプト自体のエンコード ファイルの入出力 標準入出力 標準エラー出力 データベース,CGIなどプロセス間のインターフェース Perl 5.8 では内部処理が UTF-8 で行われますが,特にエンコードの指定がされない場合,テキストは文字単位ではなく,バイト単位で処理されます。バイト単位で Shift JIS などのテキストを処理することもある程度可能ですが,2バイトの文字が文字として認識されていませんから,正

  • pythonと文字幅(Unicodeの正規化)

  • 2008-01-08 - プログラミング日記 ] エンコーディング指定

    odz buffer: Pythonのエンコーディング (http://d.hatena.ne.jp/odz/20080106/1199638622) 入出力周りのエンコーディングの設定の方法が書かれていた。この例で、エンコーディングを取得する前半と入出力のエンコーディングを設定する後半に分けて考える。 import sys, locale, codecs enc = locale.getpreferredencoding() sys.stdout = codecs.getwriter(enc)(sys.stdout) sys.stdin = codecs.getreader(enc)(sys.stdin) 『Pythonチュートリアル』には以下のコードが載っていた。 import codecs, sys sys.stdout = codecs.lookup('utf-8')[-1](sy

    2008-01-08 - プログラミング日記 ] エンコーディング指定
  • 404 NOT FOUND | Kagayaku

    美織の整形疑惑に終止符!画像40枚の検証でわかったデビューから2022年までの目元や鼻すじの変化を徹底考察

    404 NOT FOUND | Kagayaku
  • ウェブリブログ:サービスは終了しました。

    「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

    ウェブリブログ:サービスは終了しました。
  • Python のエンコーディング - odz buffer

    % cat /usr/lib/python2.5/site-packages/sitecustomize.py import sys sys.setdefaultencoding('UTF-8') % cat enc.py import sys print >>sys.stderr, 'sys.stdout.encoding: %s' % sys.stdout.encoding print >>sys.stderr, 'sys.getdefaultencoding(): %s' % sys.getdefaultencoding() print unichr(0x3042) % python enc.py sys.stdout.encoding: UTF-8 sys.getdefaultencoding(): UTF-8 あ % python enc.py | cat sys.stdout.

    Python のエンコーディング - odz buffer
  • 文字コードの再読読み込み - himadatanode’s blog

    今まであんまり気にしてなかったけど今日グリモンに触ってたら、webの他の人のスクリプトとか結構文字化けするというか。当然だけどWindowsとは違う文字コード使う人たちもいるわけで。文字化けも結構あって、かなり面倒なんじゃないかと思ってみた。多分これだけ面倒だと他の人も何らかの対策はしていそうだけど、そんな事は気にせずにムシャクシャしてやった。反省はしてない。やっぱり反省して少し調べてみる事にした。 ■思った事とか xyzzyの現状の文字コードの切り替えには少々問題があるような気がしてみた。 適当な問題点 意外と自動判別が外れる。 文字コードを変えての再読読み込みに手間が掛かりすぎる*1 文字コードの指定が細かすぎて補完とかが使い難い。 良く使う文字コードだけで良いから速く切り替えたい 体の問題は仕方がないので*2、なかったことにして取り合えず再読読み込みに手間が掛からない方法を探してみ

    文字コードの再読読み込み - himadatanode’s blog
  • サロゲートペア入門

    はじめに Windows VistaのJIS2004対応により、WindowsのUnicode環境で使用できる日語漢字の数が増えました。従来、12238字(Windows XP)だったのが13145字(Windows Vista)になり、907字追加されることになりました。これによって、JIS第3水準、JIS第4水準の漢字がすべてサポートされることになったのです(Windows XPまでは一部サポート)。 またWindows XPでも、パッチさえ当てれば、Windows Vistaと同じように追加907字を加えた13145字の漢字が使用できるようになりました。 ところが、この追加された907字の中には「サロゲートペア」という特殊な文字が304字あり、これらは今までのUnicodeの文字とは扱いが少し違います。この点について解説していきたいと思います。 対象読者 Unicodeでデータ処理

    サロゲートペア入門
    pipehead
    pipehead 2007/08/28
    > サロゲートペアを使用する文字は「1文字=4バイト」ですから、従来のUnicodeの特徴であった「文字数 × 2 = 使用バイト数」の原則が崩れてしまいます。
  • perl の Encode で find_encode は使えるのか?

    perl tips - Encodeを速く使う方法によると、find_encoding を使うと、Encode による文字変換が早くなるらしいということで実験してみました。 実験条件 use utf8 しない(use utf8 はトラブルが多すぎてやってられないので)。 変換前も変換後も utf8 フラグは立っていないこと。 実験用データとして、42KBのテキストファイル(EUC-JP, 日語半分ぐらい)を用意。 ソースはこんな感じです。引数に処理したい euc-jp のテキストファイル名を与えます。 use strict; use Benchmark; use Encode; use Encode::Guess qw(euc-jp shiftjis iso-2022-jp); my $euc = join('', <>); my $utf = $euc; Encode::from_to

    perl の Encode で find_encode は使えるのか?
  • エンコーディング変換の高速化 - odz buffer

    ref:404 Blog Not Found:perl tips - Encodeを速く使う方法 当然の話だけど、対象の文字列が長くなると、Encode::encode も、$e->encode も大差ない。 ちょっといじって試してみる。 use strict; use warnings; use Benchmark qw/cmpthese timethese/; use utf8; use Encode; use Jcode; use Unicode::Japanese; use Smart::Comments; my $str = join '', ( 'a' .. 'z', ( map { chr } ord('ぁ') .. ord('ん') ) ); $str = $str x shift if @ARGV; my $bytes = encode_utf8($str); my $u

    エンコーディング変換の高速化 - odz buffer
  • 404 Blog Not Found:perl tips - Encodeを速く使う方法

    2007年04月23日01:30 カテゴリLightweight LanguagesTips perl tips - Encodeを速く使う方法 はっきり言ってこれはフェアではない。 みかログ: ErlangとPerlの速度比較 Perl側は,Encodeが遅い. Encode::from_toがinplaceでコンバートしてしまうために,直前に文字列コピーがあるのも影響しているのかも なぜなら、Encode::from_to()は速度ではなく、安全性に最適化しているから。 そもそもはじめからUTF-8、それもutf8フラグがたっている文字列にfrom_toを使うのはばかげている。 for(my $i = 0; $i < 0xffff; $i++) { my $str2 = $str; Encode::from_to($str2, "UTF-8", "Shift_JIS"); } は単に

    404 Blog Not Found:perl tips - Encodeを速く使う方法
    pipehead
    pipehead 2007/04/23
    Encode::find_encoding()
  • それ use open - odz buffer

    しかし、 test.pl < utf8.txtは行けるが、 test.pl utf8.txtはだめ。 前にも書いたけど、引数を指定した場合、<> は STDIN じゃないですから当然ですね。とりあえず use open IN => ':utf8'; とするほうが、スマートといえばスマートか? や、Encode::decode を使うのが駄目ってことはないと思うけど。 追記 dankogai さんから Trackback が飛んできて気づいたのだが、書き方が分かりにくいな。ここでは、 use strict; use warnings; use utf8; use open IN => ':utf8'; binmode STDOUT, ':utf8'; while (<>) { print if /[ぁ-ん]/; } とするのではなくて、山下さんの元のプログラムに対して use open を追

    それ use open - odz buffer
  • PerlIO Layer で複数のオプションを使う - odz buffer

    PerlIO::gzip を使うと、 open my $fh, '<:gzip', $filename or die; で、gzip 圧縮されたファイルを直接扱える。これと open my $fh, '<:encoding(utf-8)', $filename or die; なエンコーディング指定を同時に指定するにはどうすれば良いかと聞かれたんだけども、そんなことをしたくなったことがなかった知らねー。 てことで、ちょっと試してみると。 open my $fh, '<:gzip:encoding(utf-8)', $filename or die; な感じでいいっぽい。:gzipと:encoding(utf-8)の間にはスペースが入っても良いみたいだけど。 で、ついでにPerlIO::viaを使えば PerlIO Layer に直接フィルタモジュールを挟みこめるということを、初めて知った。

    PerlIO Layer で複数のオプションを使う - odz buffer
  • Paken.NET | TCHAR型のススメ

    C/C++Windowsプログラミングをやり始めたとき、誰もが一度は嫌になるあの謎のデータ型。 "LPCTSTR"なんてのはその典型例です。 しかし、これが何かを知らぬまま放っておいてる、ということが意外とありがちなんですよね。 というわけで、一応簡単に解説しておくことにしよう、と思ったまでです。 ※ 開発環境は、Microsoft Visual C++ 2005 を想定しています。 1.UNICODE 文字コードとはつまり、数値と文字の関係を示したものです。 文字'a'は128で表し、文字'b'は129で表し・・・と文字と数値が一対一で対応して定められています。(数値は適当です) UNICODEも、その文字コードの一種で、古い文字コードのASCIIに比べて新しいものです。 NT系のWindowsには全て対応しているので、現在のほとんどの環境がUNICODE対応となっています。 だったら

  • Perl 5.8.x Unicode関連

    -> 趣旨と注意書き -> UTF8フラグ? -> UTF8フラグとPerlIOレイヤ -> UTF8フラグのついた文字列を記述する -> Wide character in print ... -> Encode -> utf8::* -> use utf8; -> use encoding; -> use UTF8 と use encoding -> JcodeからEncodeへ -> 情報源 <- モドル 趣旨と注意書き Perl 5.8.x のUnicode 関連です。 正直、5.8.x は、ネタでしか使ってなかったので(ぉ、ちゃんといじったことがありませんでした。 使ってみると、よくわかんなくなったので、ちょっとまとめてみました。 今でもあんまりわかってないかもしれないので、内容は無保証です。 突っ込み歓迎。 Jcode、Encodeのメンテナの弾さんから、ご指摘いただいたので、

  • odz buffer - null filehandle

    Perl で、標準入力のエンコーディングを指定するには binmode を使えばいいけど、 while (<>) { }な null filehandle を使うときは use open を使わないといけない罠。 まぁ、当然といえば当然だけど、知らなかったらはまるよな。引数を指定せずにパイプかリダイレクションを使うと動くし。

    odz buffer - null filehandle
  • Wide character in print at ...

    [Perl] Wide character in print atというエラーはUTF-8フラグが付いた文字列をprintしようとしているからである。なのでUTF-8フラグを取り外してからprintすればエラーがでなくなります。UTF-8フラグが付いているかどうかはutf8::is_utf8を使用すればよい。 #UTF8フラグが付いているかの確認 utf8::is_utf8では実際の文字列がUTF-8かどうかではなく、あくまでフラグがついているかどうかを確認します。そのため、UTF-8の文字列もフラグが付いていなければ上記の出力はno flagとなります。またutf8::is_utf8はuseしなくても使用できる。useすると全然違う意味あいになるので注意。 UTF-8フラグが付いていたら、encodeを使用してフラグをはずします。以下の例では$stringをutf-8に変換して出力します

  • Python の日本語 - veryberry_cafeの日記

    この結果の差はなんだろう。 C:\py\python >>> import sys >>> sys.stdout.encoding #標準出力のエンコード 'cp932' >>> sys.stdin.encoding #標準入力のエンコード 'cp932' >>> sys.getfilesystemencoding()#ファイルシステムのエンコード 'mbcs' >>>cp932は、MS932とも呼ばれる。Shift_JISのこと。shift_jis(ms932)などと書かれる。じゃぁmbcsって? 1文字が複数バイトで表現される文字の集合。また、そのような文字集合に割り当てられた文字コードの体系。日語や中国語などの文字セット/コードのように、1文字を2バイトで表現する文字セットやコード体系を特にDBCS(Double Byte Character Set)という。 MBCSとは Pyt

    Python の日本語 - veryberry_cafeの日記