perl は 5.8 から Unicode(utf-8) がサポートされました.5.6 でも Unicode に対応はしていましたが,ぜんぜん使い物にならず,ようやく 5.8 でまともに使えるようになったということです.ただせっかく使えるにもかか わらず perldoc などを見てもイマイチ使い方がわからないので,独自にまと めてみたのがこのページです. 誤った書き方や勘違いをしてい ることもあるので,形式的ですがこのページの内容は無保証です. 内容 文字コード変換 perlIO jperlからの移行 UTF-8フラグ 文字コード自動判別 Unicode Standard Unicode 正規化 その他 参考資料 文字コード変換 とりあえず perl5.8 で新しく組み込まれた機能を見るために,euc-jp から shift_jis への変換スクリプトをいくつか載せます. openを利用し
http://kjirou.sakura.ne.jp/mt/2008/10/python_unicode.html例えば、ユニコード型文字列の内、漢字のみ("一"〜"龥")をマッチさせる場合 l = re.findall(u"[\u4e00-\u9fa5]+", "ひらがな漢字カタカナascii".decode("utf-8")) print l[0].encode("utf-8") # -> "漢字" 他の言語と違ってUnicode型というデータ型があるので明瞭極まりない! (from http://kjirou.sakura.ne.jp/mt/) PythonはわからないけどPerlに通じるものを感じたのでPerlでやってみた。 まずは上記のコードに似せたパターン。スクリプトファイルはUTF-8で作成。 use strict; use warnings; use Encode; my
といった感じ。ちなみにjava.util.regexとPerlのUnicodeブロックは接頭子Inを使うが、.NETの場合は接頭子Isを使う、という差異があります。 Unicodeスクリプトとブロックの違いがビミョーに見えるけど、ブロックがコードブロックをゴリッと指定したものに対して、スクリプトは特定言語に関係する文字の種類を直接指定するものなのでブロックよりも断定的、って感じで見れば良かなと。ちなみにUnicode関連のドキュメントによるとUnicodeプロパティとスクリプトで日本語の文章を表そうとすると m/(?:(?:\p{Hiragana}|\p{Katakana}|\p{Han}|\p{Latin}|\p{Common}) (?:\p{Inherited}|\p{Me}|\p{Mn})?)+/x; こんな感じになるそうな。実際流通している文章はこれより多様なので現実とは微妙に乖離
第0面(Plane 0)は、基本多言語面(英:Basic Multilingual Plane; BMP)である。 Unicode一覧 0000-0FFF(U+0000からU+0FFFまで) Unicode一覧 1000-1FFF(U+1000からU+1FFFまで) Unicode一覧 2000-2FFF(U+2000からU+2FFFまで) Unicode一覧 3000-3FFF(U+3000からU+3FFFまで) Unicode一覧 4000-4FFF(U+4000からU+4FFFまで) Unicode一覧 5000-5FFF(U+5000からU+5FFFまで) Unicode一覧 6000-6FFF(U+6000からU+6FFFまで) Unicode一覧 7000-7FFF(U+7000からU+7FFFまで) Unicode一覧 8000-8FFF(U+8000からU+8FFFまで)
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 に記事を追加しました。
Unicode対応 JIS X 0208 文字コード一覧 JIS X 0208 の区点番号、JISコード、シフトJISコード、EUCコード、Unicode(UTF-8, UTF-16)の文字コード対応一覧です。 文字コードとその文字を順に出力しているだけですので、表示される文字はフォントによって決まります。 01区~08区 JIS非漢字(各種記号、英数字、かな) 13区~13区 NEC特殊文字(機種依存) 16区~47区 JIS第1水準漢字 48区~84区 JIS第2水準漢字 文字コードについてのページや、文字コード一覧についての説明もあります。 JIS X 0208 JIS非漢字 文字コード表 区 点 JIS SJIS EUC UTF-8 UTF-16 字 01 01 2121 8140 A1A1 E38080 3000 01 02 2122 8141 A1A2 E38081 3001
�$B!!�(BUnicode�$BBP1~$N�(B JIS X 0201 �$B$N�(BJIS�$B%m!<%^;z$H�(BJIS�$B%+%J$NJ8;z%3!<%II=$G$9!#�(B �$B!!�(B�$BJ8;z%3!<%I$K$D$$$F�(B�$B$N%Z!<%8$d!"�(B�$BJ8;z%3!<%I0lMw$K$D$$$F�(B�$B$N@bL@$b$"$j$^$9!#�(B JIS�$B%m!<%^;z!'�(BASCII�$B!&J8;z%3!<%II=�(B JIS SJIS EUC UTF-8 UTF-16 �$B;z�(B 20 20 20 20 0020 21 21 21 21 0021 ! 22 22 22 22 0022 " 23 23 23 23 0023 # 24 24 24 24 0024 $ 25 25 25 25 0025 % 26 26
2008年05月08日04:00 カテゴリLightweight Languages perl - Encode 中級 以前書いた 404 Blog Not Found:perl - Encode 入門 は大好評でしたが、 ウェブで利用される文字コード、UnicodeがASCIIを上回る--グーグルが明らかに:マーケティング - CNET Japan UnicodeがASCIIを追い越し、World Wide Web上で最も多く利用されている文字コード体系になったとGoogleのシニアインターナショナルソフトウェアアーキテクトMark Davis氏がブログで述べている。 という時代に完全対応するには、入門以上の知識がちょっと必要になります。 例えば、本blogをホストしてくれているlivedoor blogの文字コードはEUC-JP。「時代はUnicode」だと言っても、こうした事情もまだ
2009年03月03日19:00 カテゴリLightweight Languages perl - EncodeでXSSを防ぐ 良記事。 第7回■文字エンコーディングが生み出すぜい弱性を知る:ITpro だけど、問題点のみ具体例があって、対策にないのが片手落ちに感じられたので、その点を補足。 結論だけ言ってしまえば、Perlなら以下の原則を守るだけです。 404 Blog Not Found:perl - Encode 入門 すでにOSCONでもYAPCでも、あちこちそちこちでこの基本方針に関しては話したのですが、ここ 404 Blog Not Found でも改めて。 Perl で utf8 化けしたときにどうしたらいいか - TokuLog 改め だまってコードを書けよハゲ入り口で decode して、内部ではすべて flagged utf8 で扱い、出口で encode する。これが
Ringとは、リクルートグループ会社従業員を対象にした新規事業提案制度です。 『ゼクシィ』『R25』『スタディサプリ』など数多くの事業を生み出してきた新規事業制度は、 1982年に「RING」としてスタートし、1990年「New RING」と改定、そして2018年「Ring」にリニューアルしました。 リクルートグループの従業員は誰でも自由に参加することができ、 テーマはリクルートの既存領域に限らず、ありとあらゆる領域が対象です。 リクルートにとって、Ringとは「新しい価値の創造」というグループ経営理念を体現する場であり、 従業員が自分の意思で新規事業を提案・実現できる機会です。 Ringフロー その後の事業開発手法 Ringを通過した案件は、事業化を検討する権利を得て、事業開発を行います。 さまざまな事業開発の手法がありますが、例えば既存領域での事業開発の場合は、 担当事業会社内で予算や
2009年06月15日07:00 カテゴリLightweight Languages perl - use utf8; #って何だ? id:otsuneに建設予定フラグがたてられていたので。 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech Perl の utf8 関係が未だ全く理解できない。わからないことがわからないので整理 use utf8はいつフラグをたてるか use utf8 しててもフラグたたないことがある…… これは、以下の実例を見ていただくのが一番よいだろう。 #!/usr/bin/perl use strict; use warnings; use utf8 (); sub check_flag{ my $str = shift; print qq("$str" ), utf8::is_utf8($str) ? 'is' : 'IS NOT',
2009年06月06日15:30 カテゴリLightweight Languages javascript - でも全角半角変換 ぐぐっても、変換コードがありそうでなかったのでついでに。 404 Blog Not Found:perl - で全角半角変換をモダンに行う Demo 全角 半角 実装 見ての通り、けれんみのないやり方をしています。 (function(){ var zenkaku = ['。', '、', '「', '」', '・', 'ー', 'ァ', 'ア', 'ィ', 'イ', 'ゥ', 'ウ', 'ェ', 'エ', 'ォ', 'オ', 'カ', 'ガ', 'キ', 'ギ', 'ク', 'グ', 'ケ', 'ゲ', 'コ', 'ゴ', 'サ', 'ザ', 'シ', 'ジ', 'ス', 'ズ', 'セ', 'ゼ', 'ソ', 'ゾ', 'タ', 'ダ', 'チ', 'ヂ',
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
Unicode の規格では,文字の合字(リガチャ等)等を統一的に扱えるように,「正規化」という処理が仕様として定まっています。この正規化処理のうち「互換性分解」という処理を行うと副作用として半角カナを全角カナに変換できます(逆に全角カナ→半角カナはできません)。 #!/usr/bin/perl use strict; use utf8; use Encode; use Unicode::Normalize; my $src = 'ポンジュース'; my $dst = Unicode::Normalize::NFKC($src); print Encode::encode('utf8', "${src} => ${dst}\n"); # OUTPUT is: ポンジュース => ポンジュースUnicode の正規化についてはperl5.8のUnicodeサポート および http:/
タイトル長い。っていうかそのまんまです。 #!/usr/bin/perl use strict; use warnings; use URI; my $s = 'http://example.com/?q=%82%e2%82%e9%95v%82%c5%8aw%82%d4'; utf8::upgrade($s); my $uri = URI->new($s); my %qf = $uri->query_form; $qf{flag} = 'ON'; $uri->query_form( %qf ); my $uri_str = $uri->as_string; これ、一見すると$uri_strは http://example.com/?q=%82%e2%82%e9%95v%82%c5%8aw%82%d4&flag=ONになりそうなんですが、実際には http://example.com/?q=
UTF8 フラグについてわかってるつもりだったんですが,utf8::is_utf8 considered harmful - Bulknews::Subtech - subtech を読んで混乱したので,自分なりにまとめてみました。間違いがありましたらご指摘よろしく。 まとめ スカラー変数の内部表象の状態を示すものとして UTF8 フラグというものがある スカラー変数は(リファレンス等は別として)下記のものを格納できる (A) 文字列(内部表象: UTF-8) (B) 文字列(内部表象: ISO-8859-1) (C) バイナリ列 純粋なバイナリストリーム(画像ファイル等)かもしれないし, UTF-8 octet stream かもしれないし, CP932 octet stream かもしれないし,etc, etc ... Perl は(後方互換性確保などの理由から)ISO-8859-1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く