タグ

encodeとPerlに関するlamichのブックマーク (10)

  • Cannot decode string with wide characters

    use utf8; binmode STDOUT, ':utf8'; binmode STDIN, ':utf8'; use strict; use Encode; sub main(){ #UTF-8(BOMなし),CRLFのファイルに書いてます。 my $str = "あ"; my $bin = $str; $bin = Encode::encode('euc-jp', Encode::decode('utf8', $str)); $bin = Encode::encode('utf8', Encode::decode('euc-jp', $bin)); print "Content-Type:text/plain;charset=UTF-8\n"; print "\n"; print $bin; } &main; ======================= 希望する出力結果: あ

    Cannot decode string with wide characters
    lamich
    lamich 2009/02/14
    Cannot decode string with wide characters
  • Nix::WebLab: Cannot decode string with wide characters

    XML::RSS と Encode の組み合わせで以下のエラーが発生。 Cannot decode string with wide characters 最初に目にした記事がこちら。 Encode.pm ではまった なるほど。(って実は良く分かってない...) 次に見つけたのがこちら。 perl//Encode Q&A にこんなやり取りがありました。 質問: >Wide character in subroutine entry at /path/to/perl/lib/Encode.pm line 154. と言われて死にます。 Encode の bug ですか? いえ、おそらく仕様です。 このエラーが出て死ぬ原因は、 decode の入力文字列が utf8 (Wide character) 形式になっている、つまり U+0100 以上の文字が含まれていることにあります。 Enc

    lamich
    lamich 2009/02/14
    _utf8_off(STRING),_utf8_on(STRING)
  • URI::Escape

    NAME URI::Escape - Percent-encode and percent-decode unsafe characters SYNOPSIS use URI::Escape; $safe = uri_escape("10% is enough\n"); $verysafe = uri_escape("foo", "\0-\377"); $str = uri_unescape($safe); DESCRIPTION This module provides functions to percent-encode and percent-decode URI strings as defined by RFC 3986. Percent-encoding URI's is informally called "URI escaping". This is the termin

    URI::Escape
    lamich
    lamich 2009/02/14
    $uri = uri_escape_utf8($string);
  • Jcodeを使おう(実用本位のJcode紹介)

    この講演資料は、Jcodeの全ての事柄を網羅しているわけではありません。 現時点でJcodeを使い始める上で知っておくべき情報をまとめたものです。

  • WWW::Mechanize 文字化けにはまる。 - wajiho’s memo(実はよくわかっていない)

    やりたいことはとっても簡単なことで、googleで検索して結果を取得・表示させるだけ。 なのに文字化けしてすごい躓いたよ。。。 Mech使ってやって見ました。 use WWW::Mechanize; my $mech = WWW::Mechanize->new; my $url = 'http://www.google.co.jp'; $mech->get( $url ); $mech->success or die $mech->response->status_line; $mech->submit_form( fields => { q => 'ヤングジャンプ', } ); my @links = $mech->find_all_links( class => 'l' , ); my @texts = map { $_->text } @links; foreach my $text

    WWW::Mechanize 文字化けにはまる。 - wajiho’s memo(実はよくわかっていない)
  • Perl 5.8.x における日本語コード変換★

    Perl 5.8ではEncode.pmが標準モジュールとなり、多バイト文字を標準で簡単に扱えるようになりました。が、jcode.plやJcode.pmを用いたコード変換の経験があると、逆にこれが仇となって文字化けの嵐に遭います。(私の場合そうだったというだけで、普通はそんなこと無いのかもしれないのですが。)漸く最近になって基的な考え方が飲み込めるようになって来たので、この辺をまとめておこうと思います。なお、メモは新たにPerl 5.8.x的なPerlスクリプトを書く際に気をつけることをまとめたものであり、基的には既存のスクリプトにPerl 5.8 + Encode.pmを適用するためのものではありません。また、utf8でスクリプトを書くことを前提にしています。が、どちらにせよ、この知識は参考になると思います。(たぶん。) 文冒頭ですが、まず参照先を示しておきます。以下のドキュメント

  • ウェブリブログ:サービスは終了しました。

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

  • Perlクイックリファレンス - 1部 Perl入門 - [SMART]

    変数は以下のように値を代入したり出力することができます。 # 変数に文字列を代入 $value = "テストです"; # 変数を出力 print $value; 【参照ページ】 変数 配列 複数の値を1つの変数で管理したい場合は、『配列』という変数が最適です。 配列を初期化する場合は、要素をカッコで囲み、各要素毎にカンマで区切ります。 @week = ('日曜', '月曜', '火曜', '水曜', '木曜', '金曜', '土曜'); 配列はインデックスを使って参照します。インデックスは 0から始まるので注意してください。たとえば1番目のデータ "日曜" を呼び出すときは、$week[0]、"月曜"なら $week[1] とします。 # 配列 @week の1番目の要素を表示 print $week[0], "\n"; > 日曜 # 配列 @week の2番目の要素を表示 print $

    Perlクイックリファレンス - 1部 Perl入門 - [SMART]
    lamich
    lamich 2009/01/18
  • Perl の多言語処理 -- Perl ヒント集 (ja)

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

  • 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に変換して出力します

    lamich
    lamich 2009/01/17
    Wide character in subroutine entry at...
  • 1