タグ

characterencodingに関するkitsのブックマーク (90)

  • バックスラッシュと円記号の悲劇 - 仮想と現実

    Windowsのパス表示を見てみよう。Explorerでは コマンドプロンプトでは というようにパスの区切りは「¥」で表示される。これ、おかしいと思わないだろうか。なぜ円記号なのだ。通貨の円に、なにかを切り分ける意味があるわけでもないし、見た目、文字の形が区切りにふさわしいとも思えない。Yに横棒二つけた記号である。通貨の円を表す以外に使うべきではない。そもそもファイルパスの区切りに円記号を使おうと思った人は誰だ?となるだろう。もちろんそんな人はいない。これはMS-DOS登場以来現在に至るまで、日PC環境でずーっと続いている文字化けである。MS-DOSやWindowsの解説書でも円記号で印刷されているので、文字化けだとは思わない人も多いだろうが、どう考えても文字化けである。日以外の多くの環境ではWindowsのパス区切り文字はバックスラッシュ「\」で表示される。 UNIXではパスの区

    バックスラッシュと円記号の悲劇 - 仮想と現実
    kits
    kits 2016/06/15
    Shift_JISはIANAにおける登録名だが iconv などShift-JISが利用可能な環境もある。
  • 文字コードに関する「愚癡」に端を発する諸々

    隅須正昭 @nagoya313 戰後漢字の文字コードが凄い決められ方をされたせゐで、國語改革以前のやうな漢字を表示したいだけなのに無駄に勞力がかかるこの斷絶感は凄い。 2016-01-06 23:17:29 Ryusei @mandel59 @nagoya313 「國語改革以前のやうな漢字を表示したいだけなのに無駄に勞力がかかる」のは、“決め方”の問題というより、文字コードという概念自体の根源に関わる問題なのでは? 2016-01-07 21:03:53

    文字コードに関する「愚癡」に端を発する諸々
  • SVGをdata URI schemeに変換するとき文字化けしないように必要なこと - 聴く耳を持たない(片方しか)

    現在、パソコン、スマートフォン、タブレットと様々な画面サイズの情報機器が世の中に溢れています。そうした端末に適切に対応するには画像も色々なサイズのものをいくつも用意する必要があるわけですが、SVGのようなベクター画像であればそうした手間も少なくて済むのがメリットです。 例えば、AppleのサイトではロゴにSVGを使っています。 https://www.apple.com/jp/iphone/ そしてそのロゴを調べてみるとSVGをdata URI schemeで指定しているのが分かりますね。 data URI schemeはHTML文書内に記述できるため、画像ファイルのリクエストを減らして素早く画面表示が行えるという利点がありますから、世界中から多くのアクセスを集めるAppleのサイトで採用されているのでしょう。 こうした使われ方も多いことから、data URI schemeを簡単に作成でき

    SVGをdata URI schemeに変換するとき文字化けしないように必要なこと - 聴く耳を持たない(片方しか)
    kits
    kits 2014/10/16
    data:image/svg+xml;charset=utf-8,(...) という指定が必要。
  • 『秀丸で文字コードが変換できなくなったときの解決方法』

    千葉の東京寄りでウェブ制作・マーケティング 千葉県市川市・東京を活動拠点にウェブ制作・マーケティングの支援をおこなっています。講師・執筆・コンサルについてもお気軽にご相談ください。 以前も同じようなことがあったのだが、shift-jisで制作したcssファイルを、秀丸UTF-8に変換しようとすると、何故かあるファイルだけがどうしても変換できない現象に悩まされる。 【日のチャレンジ履歴】 ・秀丸で保存する時に文字コードを変更し、特にエラーも無く終わるのだが、次に開いてみるとshift-jisに戻ってしまう。 ・秀丸の「ファイル」→「エンコードの種類」→「UTF-8」を選択して、変換。この時、ウインドウ右下の文字コード表示で確認すると確かにUTF-8になっているが、保存して(UTF-8であることを確認して)終了→再び開くとshift-jisになってしまう。 ・文字コードを変換できるマクロを

    『秀丸で文字コードが変換できなくなったときの解決方法』
    kits
    kits 2014/08/27
    「標準のエンコードの種類」の設定がShift-JISで、テキストの内容がASCIIのみだったからではないか。メモ帳で保存するとBOMが付くのでUTF-8固定になる。
  • 「ユニコードは犯罪だからやめてください」の衝撃 - yanok.net

    新年早々、大笑いしてしまったこと。 下らないといえば下らないので書くまでもないかと思ったのですが、後で忘れた頃に読み返すと面白いかもしれないので書きとめておくことにします。 何があったのかは下記のページに詳しく書かれてあります。こちらを読んでいただければ、ぶっちゃけそれ以上のことはないです。 「LINEウイルス」の正体とは―LINE内で流行する「ウイルス攻撃」の現状について 簡単にまとめていうと、 LINE上で「ウイルス」なるものを送りつけることができるという噂があって、実際にそれを送りつけられるとLINEのアプリが誤動作(重くなる)らしい 実際のところ、ここで「ウイルス」と呼ばれているものはある特定の文字列である (プログラムではない。であるからしてウイルスでもない) 特定の文字列を受け取ると動作が極端に重くなる不具合のあるアプリがある、というのが真相らしい 問題を引き起こす文字列は、U

    kits
    kits 2014/01/12
    あなたもわたしもユニコード。
  • MojoliciousのJSON出力で文字化け - Qiita

    MojoliciousでJSON-APIを作るのは普通に行うと思いますが、 JSON文字列をHTML内に出力するというケースもあるでしょう。 そんな時に、文字化けに遭遇したのでご紹介します。 下記サンプルコードを見てください。 package MojibakeApp::Example; use Mojo::Base 'Mojolicious::Controller'; use Encode 'decode'; # This action will render a template sub welcome { my $self = shift; my $moji = {hello => "文字化け"}; my $json = $self->render( json => $moji , partial => 1); $self->app->log->debug($json); print

    MojoliciousのJSON出力で文字化け - Qiita
    kits
    kits 2013/12/06
    render への入力はテキスト文字列、出力はバイナリ文字列なのでバグではない。/ なぜutf8フラグという言葉を使うかなあ。(記事本文の用語は正しい)
  • Perl の文字列エンコーディングの話 | Hachioji.pm 日めくりテックトーク

    ハァイ,先日 Plack::Request::WithEncoding というモジュールをリリースしました,@moznion です.皆様いかがお過ごしでしょうか. さて,このモジュールを書いてて Perl の文字列エンコーディングに関する知識を幾ばくか深めましたので,共有したいと思います.まあ大体の皆さんは「そんなこと知ってるぜ!! 常識だろ!」という趣だと存じ上げますが…… ただまあ,「文字化けしてつらい!!」みたいなのは誰しも通る道だと思いますので記しておくこととします! TL;DR 入り口で decode して,内部ではすべて flagged utf8 で扱い,出口で encode する.これがすべてです!とにかくこの基方針をまもっていれば幸せになれます. from Perl で utf8 化けしたときにどうしたらいいか - blog.64p.org ぶっちゃけ,上記のエントリ良す

    kits
    kits 2013/10/10
    UTF8フラグという言葉を使うべきでない。 cf. perlunifaq, http://monmon.hateblo.jp/entry/20111024/1319473613 / 引用記事は2008年。
  • Perlのデータ構造をダンプするためのモジュール群 | hirobanex.net

    マコピー(@mackee_w)にDDPって教えてもらったので、この機会にみんなに大人気のCPANモジュールまとめ記事を書くよ!!とりあえず、みんな大好きなまとめ記事なんで、はてぶをポチっとしてね!! 今回紹介するモジュール群 Data::Dumper Data::Dumper::AutoEncode Data::Dumper::Concise Data::Printer DDP 結論的には、DDPがいいよって話ですが、よく知らない方は以下を読んでいただくととても楽しいと思います。 Data::Dumper みんな大好き定番モジュールですね!!これがないと死んじゃうって近藤先生がおっしゃっていた気がします。 以下のように使います。 #!/usr/bin/env perl use strict; use warnings; use utf8; my $data = +{ hash => +{

    kits
    kits 2013/09/30
    内部文字列かバイナリかの区別が明確という点で、Data::Dumper の \x{XXXX} 式の表示は利点でもあると思う。
  • ゆーすけべー日記

    ムフフなビデオも網羅的に扱うDVDや動画の提供サービス「DMM」のWeb APIがいつの間にか公開していたらしく、なにぶんノーマークだったもので昨日の夜知ってビックリした。というかDMMは一生API出さないだろうなんて決め込んでいたのが良くなかったですね。 ってことでとあるAV女優の商品一覧を出力するようなスクリプトを書いてみました。API固有の「癖」でいくつか実装する際の注意すべきポイントがあるのでそれをまず紹介します。Perlコードですが参考になるかもです。 リクエストパラメータにはタイムスタンプがいる リクエストのパラメータにはタイムスタンプが必須です。形式は 2013-05-14 08:03:16 というもの。僕はDateTime派なので、以下のコードで現在のタイムスタンプの文字列をつくっています(*ある方から指摘を受けてコードを修正させていただきました!)。 use DateTi

    ゆーすけべー日記
    kits
    kits 2013/05/14
    URI の query_form でも普通にeuc-jpにencodeした文字列を値に入れれば正しくエスケープされるのでは。/ XML::Simple で使われる XML::Parser はeuc-jp等に対応していないので、対応したモジュール(XML::LibXML等)を使う方がよいと思う。
  • ひさびさに STDIN キャプチャしようとしたら、ちょっとだけハマった - tsucchi の日記 2nd season

    Perl 5.18 からは、PerlIO::scalarでopenできるのはバイト列だけになるようです。 とのことだったので、「あれ?utf8の文字列を STDIN 経由でキャプチャしたらどうなるんだっけ?」とか、ちょっと気になったのでやってみた。 最初に書いたのがコレ。(いつものやつです) #!/usr/bin/perl use strict; use warnings; use utf8; use Test::More tests => 1; sub cat { my $result = ''; while( <STDIN> ) { $result .= $_; } return $result; } { my $inputs = "あ\nい\nう\n"; open my $IN, '<', \$inputs; local *STDIN = *$IN; is( cat(), "あ\nい

    kits
    kits 2013/04/30
    local *STDIN = $IN; ともできます。
  • perl - 最速のUTF-8処理法 : 404 Blog Not Found

    2013年03月04日14:45 カテゴリTipsLightweight Languages perl - 最速のUTF-8処理法 Perl Cookbook (English, Kindle Ed.) Christiansen / Torkington [邦訳: Perlクックブック] というわけで解説。 2013/03/04:Unicode::UTF8 がガチ爆速すぎる - bayashi.net encode より decode のが差が大きい感じ。encode だけだと、文字列長くなると Encode の方が速いっぽい。 まずは改めて検証してみましょう。 https://gist.github.com/dankogai/5079930 確かにその通りになっています。Unicode::UTF8はEncodeはおろかPerl組み込みのutf8::decodeより高速なのか(文字列をコピ

    perl - 最速のUTF-8処理法 : 404 Blog Not Found
    kits
    kits 2013/03/04
    decode 時の validation の差
  • 第16回 Perl内部構造の深遠に迫る(2) | gihyo.jp

    前回の(1)はこちらから。 文字化け問題 ─⁠─ Perlの文字列の実装に迫る 次のテーマは文字列です。文字化けは、プログラマの意図したエンコーディングと実際のエンコーディングが異なるときに起きる現象で、どんなプログラミング言語でも問題になります。ただPerlではv5.8.0以降、さらにテキスト文字列という概念ができたため、プログラマの意図をコードに落とす際に少し工夫が必要です。この概念を正しく理解していないと、エンコーディングが正しく見えるときでも文字化けが起きることがあるのです。そこで節では、文字化けをデバッグするという目的のもと、perlの文字列の実装に迫ります。 まず、よくある文字化けを再現するコードがリスト7です。CPANモジュールのEncode::Locale[6]をインストールしておいてください。また、ファイルはUTF-8で保存してください。 リスト7 hello-moji

    第16回 Perl内部構造の深遠に迫る(2) | gihyo.jp
  • WebService::DMMを書いてみた - Shohei Yoshida's Diary

    DMMがようやく WebAPIを提供ということで書いてみました。 Perlのコードを久しく書いていなかったのでリハビリも兼ねてます。 リポジトリ syohex/p5-WebService-DMM · GitHub サンプルコード #!perl use strict; use warnings; use lib '../lib'; use WebService::DMM; use Config::Pit; use utf8; binmode STDOUT, ":utf8"; my $config = pit_get('dmm.co.jp', require => { affiliate_id => 'DMM Affiliate ID', api_id => 'DMM API ID', }); my $dmm = WebService::DMM->new( affiliate_id => $c

    WebService::DMMを書いてみた - Shohei Yoshida's Diary
    kits
    kits 2012/09/25
    「レスポンスが EUC-JPでエンコーディングされた XMLなんですが、…」XMLは文字エンコーディングは何でも構わない筈だし、iconv入っている環境ならlibxml2で問題なく処理できると思う。
  • Perlのお約束 - 新大阪でコワーキングスペースを主宰しているPerlプログラマのブログ

    2012/04/27 Perlのお約束 @nqounetです。 Perlのスクリプトを書くときの「お約束」として、「use strict」などの色々を整理していたのですが、お約束として好ましくないことをしていた事がわかりました。 :encoding(UTF-8) の代わりに単に :utf8 を使うことで、もしデータが 内部で既に UTF8 で表現されていれば、エンコードの手順を省略します。 これは、書き込むときにはよい振る舞いであると広く受け入れられていますが、 読み込むときには危険があります; なぜなら不正なバイト列を受け取ると 内部矛盾を引き起こすからです。 入力に :utf8 を使うとセキュリティ侵害を引き起こす可能性があるので、 どうか代わりに :encoding(UTF-8) を使ってください。 [perlunifaq - Perl Unicode FAQ 【perldoc.jp

  • File::Copy、お前もか - miau's blog?

    以前 ActivePerl での File::Find や Cwd の日語問題について書いたけど、File::Copy にも似たような問題があった。解決策は同じような感じなので、簡単に説明。 ■現象 use File::Copy; copy('from\\サンプルソース.pl', 'to') or die "Copy failed: $!"; とすると、to\ース.pl というファイルができてしまう。Shift_JIS だと「ソ」の 2 バイト目が「\」になるから、ファイル名の取得かなにかでしくじってるのはわかる。 ■調査 処理を追ってみると、File\Copy.pm で sub copy { my $from = shift; my $to = shift; $to = _catname($from, $to); return syscopy($from, $to); } みたいな処理

    kits
    kits 2012/06/21
    ファイル名がshift_jis(cp932)であるOSでの問題
  • XML宣言のencoding属性の値がshift_jisとなっているXML文書をChromium 18で開けない? - 人生が二度あれば

    kits
    kits 2012/04/17
    単にChromiumのXMLパーサではshift_jisをサポートしていないということではないかなと思う。
  • Perlによる日本語コード変換のメモ(第二版)

    Perlによる日語コード変換のメモ(第二版) hikoboshi.home / Perlによる日語コード変換のメモ(第二版) 前に書いたときと時代背景も知識も大幅に違うので、書き直してみることにしました。Perl 5.8以降を前提として考えます。 この文章で書く(つもりの)こと use utf8環境での、文字セットの考え方 発生しがちな文字化けとその原因 解決のヒント jcode.pl時代の文字セットの扱い まずは、jcode.plなどが全盛だった時代を思い出してみます。jcode.plの時代は、Unicodeはほぼ使われておらず、JIS, Shift_JIS, EUC_JPあたりの変換を行う事が主でした。実際のコードを見て、扱われ方を考察してみましょう。 #!/usr/bin/perl # jcode.plを用いたコード変換 require 'jcode.pl'; open my $

    kits
    kits 2012/03/09
    2004~2009年の記事。/ jcode::convert(*data, 'euc'); という型グロブによる引数渡しはmy変数には使えない( \$data なら可)。/ 「utf8フラグ」は意識すべきでないと思う。
  • Encode::UTF8Mac - Mac OS Xのファイル名のエンコーディング - Perl入門ゼミ

    Perl › モジュール › here Mac OS XはUTF-8をファイルシステムのエンコーディングとして採用していると思いきや、実は少し異なり、Mac OX X独自の仕様になっています。これを正しく扱うためにはEncode::UTF8Macというモジュールを利用すると簡単です。 use Encode qw/encode decode/; use Encode::UTF8Mac; # エンコード my $byte = encode('utf-8-mac', $string); # デコード my $string = decode('utf-8-mac', $byte); useを使ってEncode::UTF8Macを読み込むと、Encodeモジュールのエンコーディングとしてutf-8-macを利用できるようになります。このエンコーディングを利用すれば、Mac OS Xのファイル名を正し

    Encode::UTF8Mac - Mac OS Xのファイル名のエンコーディング - Perl入門ゼミ
  • Encode::Locale - 環境に合わせたエンコーディングを提供する - Articles Advent Calendar 2011 Casual

    こんにちは、Csideです。最近はtwitterでウザ絡みするのが楽しくて仕方がありません。 さて、3分で読める軽い話をば。Gisle Aas氏の書いたEncode::Localeというモジュールの紹介です。 Perlでマルチバイト文字を処理する際は、「外から受け取るときはdecode、出力するときはencode」というのは基ですね。自分で使うスクリプトを書くぶんには、自分のターミナルのエンコーディングに合わせてencode/decodeしてやればいいですね。 しかし、作ったスクリプトを他の人にも使ってもらいたくなったときに問題は発生します。あなたの作ったスクリプトを使う人のターミナルのエンコーディングはUTF-8とは限らず、EUC-JPかもしれませんし、WindowsであればShiit_JISかもしれないからです。 それでは、その環境のターミナルのエンコーディングに合わせてencode

    Encode::Locale - 環境に合わせたエンコーディングを提供する - Articles Advent Calendar 2011 Casual
    kits
    kits 2011/12/02
    console_in, console_out (エンコーディング名), decode_argv (関数)
  • Perl5 においてファイルからの読取る場合における Malformed UTF-8 問題 - tokuhirom's blog

    Perl::Critic が最近 PerlIO layer に :utf8 つかうと怒ってくるけど、べらんめえしったことか! とおもっていたら、サイトが表示できなくなった(このような問題を hasegawayosuke 現象と我々はよんでいる)ので、ちゃんと調べた。 https://metacpan.org/module/Perl::Critic::Policy::InputOutput::RequireEncodingWithUTF8Layer 以下のようなスクリプトを実行する。 #!/usr/bin/perl use strict; use warnings; use utf8; use 5.010000; use autodie ':all'; use Devel::Peek; { open my $ofh, '>', 'foo.txt'; print $ofh "\xC0\xAF"

    kits
    kits 2011/11/02
    読み込むときの :utf8 には危険がある。perlunifaq にも記載あり。 "What is the difference between :encoding and :utf8?"