タグ

character_encodingに関するpipeheadのブックマーク (98)

  • PythonでWebスクレイピングする時の知見をまとめておく - Stimulator

    - はじめに - 最近はWebスクレイピングにお熱である。 趣味機械学習のデータセット集めに利用したり、自身のカードの情報や各アカウントの支払い状況をスクレイピングしてスプレッドシートで管理したりしている。 最近この手の記事は多くあるものの「~してみた」から抜けた記事が見当たらないので、大規模に処理する場合も含めた大きめの記事として知見をまとめておく。 追記 2018/03/05: 大きな内容なのでここに追記します。 github.com phantomJSについての記載が記事内でありますが、phantomJSのメンテナが止めたニュースが記憶に新しいですが、上記issueにて正式にこれ以上バージョンアップされないとの通達。 記事内でも推奨していますがheadless Chrome等を使う方が良さそうです。 - アジェンダ - 主に以下のような話をします。 - はじめに - - アジェンダ

    PythonでWebスクレイピングする時の知見をまとめておく - Stimulator
    pipehead
    pipehead 2017/06/25
    requests, BeautifulSoup, Mechanize, PyQuery, Selenium, PhantomJS, chardet, timeout_decorator, multiprocess, joblib, aiohttp, grequests, requests-futures, Scrapy
  • 「ユニコード」で予期せぬ目に遭った話 - moriyoshiの日記

    自分の知らないCJK Ideographのバリエーションがまだあったことに戦慄している pic.twitter.com/kUlyRLDDTM— moriyoshit (@moriyoshit) March 9, 2017 などというツイートをしたところ、思ったより反響があったのでまとめておく。 上記ではあいまいに「バリエーション」などと書いたが、Unicodeとそれを扱う環境においては、バリエーションと一口に言っても次のような状況がある。 意味論的に等価な異なる字形の集合 同じ字形で異なるコードポイントの集合 aは結構なじみ深いと思う。 a-1. 異なるコードポイントにそれぞれ異なる字形が割り当てられているもの 例: 「東」(U+6771) ⇔「东」(U+4E1C) 「斉」(U+6589) ⇔「齊」(U+9F4A) 「高」(U+9AD8) ⇔「髙」(U+9AD9) a-2. 同じコードポイ

    「ユニコード」で予期せぬ目に遭った話 - moriyoshiの日記
    pipehead
    pipehead 2017/03/13
    意味論的に等価な異なる字形の集合, 同じ字形で異なるコードポイントの集合
  • 知られてそうで知られてない少し知られてるECMAScript 2015 (ES6)の新機能: Days on the Moon

    Kyoto.js #10で「知られてそうで知られてない少し知られてるECMAScript 2015 (ES6)の新機能」というライトニングトークをしたので、そのスライドに当日しゃべった内容や補足を追記して以下に掲載します。 自己紹介 nanto_vi 情報規格調査会SC 22/ECMAScript Ad hoc委員会 editional issueの報告 ECMAScript 2015 (ECMA-262 6th Edtition) クラス構文 アロー関数 ブロックスコープ Promise etc... 2015年にECMAScriptが大幅に改定されました。クラス構文やアロー関数の追加はあちこちで取り上げられているので皆さんご存知でしょうが、ここではあまり取り上げられていない地味な新機能を紹介します。 Unicodeの符号位置 // 🍣 '\uD83C\uDF63'; // ES5 '

  • UTF-8

    Unicodeのテキストをファイルに保存する場合、UTF-8という形式がよく使われる。システムのログや構成ファイル、XML/HTMLファイル、プログラムコードなど、UTF-8が使われる場面は非常に多い。UTF-8とは何か、どのような特徴を持つのかを解説。 連載目次 「UTF-8」とは、Unicode文字の符号化(エンコード)方法の1つ。Unicodeの文字コード(コードポイント)を、1~4bytesの可変長のバイトデータのストリームとして表現する方式である。Unicode文字列をファイルに保存したり、ネットワーク経由で送信したりする場合にはこのUTF-8がよく用いられる。近年では、HTMLコードやプログラムのソースコードなどをファイルに保存する場合は、このUTF-8形式を使うことが多い。 Unicode文字の符号化とは? Unicodeは、世界中のさまざまな言語で使われる文字を、統一された

    UTF-8
  • Unicode(ユニコード)

    デバイスやOSを問わず、システムの標準的な文字コードとして広く使われるようになった文字コード「Unicode」。その特徴や登場の背景、キーとなる技術をまとめる。 連載目次 「Unicode」(ユニコード)は、世界中の文字を1つの文字コード体系で扱えるように作られた、文字コードセットの規格。現在のコンピュータシステムでは内部コードをこのUnicodeにして、世界中でほぼ同じバイナリーコードを使えるようにしていることが多い。Unicodeコンソーシアムが規格を策定している。 Unicode登場の背景 Unicodeが登場するまでは、コンピュータシステムではShift_JIS(主にDOSやWindows)やEUC(Extended UNIX Code、主にUNIX)、EBCDIC(主にメインフレームコンピュータ)などのコードが使われていた。 これらは、英語ともう1つの言語(日語や中国語など)を

    Unicode(ユニコード)
  • Linus Torvalds、HFS+に激怒

    CVE-2014-9390 aka "Git on case-insensitive filesystems" I did not give the… gitが影響を受けた、HFS+で、一部の文字を区別しなかったり無視したりする問題に対して、Linusが吠えている。 マジで、HFS+はたぶん最悪のファイルシステムだな。クソすぎるぜ。NTFSもutf8の正規化で似たような問題(/の非正規化された表現を使用)があったが、まあ、今は修正されたんだろうよ。OS Xの問題は根的すぎる。 そりゃ、古いさ。そりゃ、データ保護がクソすぎるってのはあるさ。だが、そういうのは、単に「すげーファイルシステムじゃない」って問題だ。「自分のケツすら拭けないマヌケによって設計された信じがたいクソ」ってわけじゃない。 HFS+の恐ろしさは、すげーファイルシステムではない、ということではない。いいアイディアがあると信じ

  • chardetで文字コードを自動変換する - ももいろテクノロジー

    curlなどで取得したテキストを自動的にターミナルの文字コード(たとえばUTF-8)に変換したい場合がある。 このような場合には、Pythonのchardetモジュールが使える。 chardetは、Mozilla Firefoxで使われている文字コード判定アルゴリズムをPythonモジュールとして移植したものである。 chardetのインストール DebianやUbuntuでは最初からインストールされている。 $ sudo apt-get install python-chardet Reading package lists... Done Building dependency tree Reading state information... Done python-chardet is already the newest version. 0 upgraded, 0 newly

    chardetで文字コードを自動変換する - ももいろテクノロジー
  • 「文字列」について - 2014-11-07 - はてなるせだいあり

    序 「文字列を文字の列とみなす単純化」について議論がありますが、前提が抜け落ちてるように思うので書くことにします。 そもそもこの話はどのような文脈の上にあるかというと、テキスト処理 (wikipedia:en:Text_processing) の文脈になります。ここでいう「テキスト処理」とは plain text (wikipedia:プレーンテキスト) の検索・加工のことで、ここでは特に UNIX Text Processing の系譜が念頭に置かれています。つまり、複雑な装飾を含むリッチテキストではなく、処理の対象を ASCII 文字列といくつかの制御文字へと抽象化することで、正規表現のような強力な道具を用いた処理を可能とした世界です。UNIX でのお話ですから、ここでの具体的な処理の単位は char であり、全体としては char[] になります。この char の中身は上で述べたと

    「文字列」について - 2014-11-07 - はてなるせだいあり
  • 「文字列を文字の列とみなす単純化」ってどういうこと?解説編 - 西尾泰和のはてなダイアリー

    先日 @shyouhei さんのTweetに反応して文字列が文字の列かどうかが言語によって異なるという話をTweetしました。 shyouheiさんの投稿: PythonはどうかしらんがRubyの設計思想は「世の中はシンプルじゃない」だからな。文字列を文字の列とみなす発想その物がすでにRubyからすると過度に世界を単純化しすぎている。 https://twitter.com/shyouhei/status/528106973565165568 もうちょっと言っておくと数値計算で勝ち目のないRubyは文字列処理にめっちゃ注力してるんで。文字列処理こそがRubyの主戦場。そこでRubyが文字列をあえてカタマリで扱ってることにはそれなりの理由というものがある。つまり分解しようとするほうが困りごとが増える。IVSとか。 https://twitter.com/shyouhei/status/528

    「文字列を文字の列とみなす単純化」ってどういうこと?解説編 - 西尾泰和のはてなダイアリー
  • 文字コード地獄秘話 第2話:聖母マリアよ、二人を何故別々に? | ALBERT Engineer Blog

    はじめに 二人を最初から一つにしておけば、何も問題など起こらなかったのだ。 一つのものを二つに分けたその時から、長い物語が始まる。 おや?また会いましたね。どうも、文字コードおじさんです。 もう半年近くも前になりますが、前回の投稿はだいぶ反響があったようで驚いております。ありがとうございます。 今回も文字コードネタですが、Unicodeにおける結合文字列を取り上げてみようと思います。 高度に発達した文字コードは地獄と見分けがつかない 次の画像はTwitterの投稿フォームですが、おかしな点があります。わかりますか? そうです。4文字しか入力していないはずなのに 5文字分とカウント されていますね。おかしいと思いませんか?あなた? 改行とかスペース入れてるんじゃねーだろうな?とか言わないで下さいね? さらに次の画像を見てみてください。 こちらは4文字とカウントされていますね。先のものとは一体

    文字コード地獄秘話 第2話:聖母マリアよ、二人を何故別々に? | ALBERT Engineer Blog
  • U+FFFF以上の文字ってなんや → サロゲートペアってなんや → Spring Web Services が言うことを聞きません! とかで一日潰れた話 - エンジニア的なネタを毎週書くブログ

    表題のような感じなのですが、これまで理解が曖昧だったUnicodeとか何とかが今までよりわかったのでメモ。 尚、こちらのサイトを非常に参考にさせていただきました。 Unicodeについて コードポイントとは 文字コードとは 今日覚えた単語その一。Unicodeに限らず、文字をコンピュータ上で表現する際、1つの文字に1つの数値を対応させるわけですが、この文字に対応する数値をコードポイントというそう。 いままでASCIIコードとか呼んでました。 そして、文字と数値の割り当てのルールのことを「文字コード」と言うんだそうです。 Unicodeとは から UTF-XXは何が違うんじゃ という話へ Unicode誕生 文字コードが乱立したため、あるコードポイントで表現される文字が、文字コードによって、てんでばらばらという状況に。 ややこしいから、ひとつの統一した文字コードをつくろう! ということで「U

    U+FFFF以上の文字ってなんや → サロゲートペアってなんや → Spring Web Services が言うことを聞きません! とかで一日潰れた話 - エンジニア的なネタを毎週書くブログ
  • 文字コード地獄秘話 第1話:Unicodeにおける全角・半角 - ALBERT Engineering Blog

    ごあいさつ 皆様はじめまして、文字コードおじさんです。細々とカメラ屋を営んでおりましたが、エンジニアとしての技量を評価され、ALBERTのシステム開発・コンサルティング部で働くことを許されました。特技はサーバーの統廃合です。 今回は最初ということですが、Unicodeにおける全角・半角の取り扱いについて触れてみようと思います。なお、さも連載するかのように第1話と銘打っていますが、上層部の無慈悲な裁決によっては1話打ち切りもありえますので、その際はご容赦ください。 固定観念を捨てよう 「全角50文字、半角100文字まで」といったような文言を見かけたことがあると思います。 特にUnicode以前のレガシーな処理系では全角文字に2バイト、それ以外は1バイトという割り当てが慣習となっていました。 このため、「全角=2バイト文字、半角=1バイト文字」という観念が世間に定着しているのが現状です。 しか

    文字コード地獄秘話 第1話:Unicodeにおける全角・半角 - ALBERT Engineering Blog
    pipehead
    pipehead 2014/04/21
    East Asian Width, Ambiguous
  • 日本の文字とUnicode 第1回 | 大修館書店 WEB国語教室

    現代において、文字を書くということは、コンピュータやケータイのキーを打つことと、ほぼ同義になってきています。そして、現代のコンピュータにおいて文字を扱うためには、文字コード、それもUnicodeの助けを借りるしかなくなってきています。でも、Unicodeは日語に特化して作られたわけではないので、日の文字を扱おうとした場合、色々とヤヤコシイ点があったりします。それらのヤヤコシイ点を、できるだけ平易に説明するこのシリーズ、最初はASCII・Latin1とUnicodeの関係です。 Unicodeの最初の128文字(U+0000~U+007F、コード表参照)には、ASCIIという文字コードがそのまま収録されています。Unicodeは元々アメリカ生まれなので、アメリカでの標準的な文字コードであるASCII (American Standard Code for Information Inte

    pipehead
    pipehead 2012/05/25
    U+002D: - (HYPHEN-MINUS), U+2010: ‐ (HYPHEN), U+2212: − (MINUS SIGN), U+FF0D: - (FULLWIDTH HYPHEN-MINUS)
  • 開発者向けUnicode FAQ--もう知らないではすまされない - builder by ZDNet Japan

    クラウドネイティブの実現 モダンインフラの構築・運用の課題解決へ コンテナの可能性を広げるVMware Tanzu DX時代のアプリケーションセキュリティ 未来革新プロジェクトに邁進するSOMPO 基幹システムのモダナイゼーションに迫る VMware 渡辺氏に聞く 顧客のデジタル変革のために 自らも改革を続けるヴイエムウェアの戦略 日清品グループのDX(前編) 現場が主役のDXのススメ トップの強い意思で変革に弾み Microsoft 365のデータは安全か? クラウド型アプリを採用する企業のための 包括的なデータ保護のありかたを解説 ともにDXを推進する コンテナ化されたワークロードを管理 継続的な価値を生みだす「協創」への挑戦 ITインフラ運用からの解放 HCI+JP1による統合運用による負荷激減で 次世代IT部門への役割変革へ一歩前進 エンドポイントセキュリティの転機 情報セキュリ

    開発者向けUnicode FAQ--もう知らないではすまされない - builder by ZDNet Japan
  • Windows Vista/7/8/10:日本語入力環境について(JIS2004とは)-教えて!HELPDESK

    ポイント!Vista以降のOSは同じJIS2004対応です(XPまではJIS90) ■ Windows XPまでは・・・ WindowsXPまでは、JIS X 0208( 英数字、ひらがな、カタカナ他、第1水準・第2水準漢字を含む6879字)及びJIS X 0212(使用頻度の低い補助漢字で構成される5801字)に収録される文字を標準でサポート(標準フォントで表示可能)してきました。 JIS X 0208文字コード一覧(英数字、ひらがな、カタカナ他、第1・第2水準漢字を含むJIS基漢字) JIS X 0212文字コード一覧(使用頻度の低い補助漢字) ■ Windows Vista/7/8/10は… → JISX0213 改定2004(JISX0213:2004)★通称JIS2004 Windows Vista以降のOSでサポートしている日語コードセットはJIS2004で、JISX021

  • Shift_JIS、CP932、MS932、Windows-31J(文字コード関連) | 読み物 | ウナのIT資格一問一答

    Windows標準の文字コードはShift_JISではなく、Windows-31Jです。 それらの違いやCP932、MS932といった用語もあわせて整理してみましょう。 まずはShift_JIS。 これは日語の文字集合を符号化する文字符号化方式のうちの一つです。 Microsoftにより、MS-DOSの標準日語コードとして採用され、CP932という管理番号を与えられるとともに独自の拡張が行われました。 MicrosoftはこのCP932を独自に拡張することを、OEMメーカー(MS-DOSを搭載したパソコンを販売するメーカー)に許していたため、各OEMメーカーごとに異なる拡張が行われました。 その後、MicrosoftWindows3.1の日語版を出すにあたり、OEMメーカーにCP932の独自拡張を許すという方針を撤回し、当時、日のパソコン市場で特に大きなシェアを持っていたIBMと

  • Unicodeの特殊な文字 “結合文字列” – ものかの

    2024.5.18更新 まともに Unicode のテキストを扱おうとすると、結合文字列はどうしても避けることのできない問題です。ここではあまり深く掘り下げずに、ユーザの眼を通してこれを見ていこうと思います。 まずはじめに、Unicodeには「特殊な文字」があることを知っておきましょう。 上図を見てください。これは macOS のテキストエディットに入力した2つの「ポ」です。同じ文字が並んでいるだけのように見えます。でも実はこの2つ、文字データとしてはまったく違うものなんです。 左はいつも私たちが使っている1文字の「ポ」ですが、右は「ホ+半濁点」の2文字のデータで1文字になっています。これが Unicode の特殊な文字 “結合文字列” です。見た目が同じなので違いがまったく分かりません。 そこで違いが分かるように簡単なソフトを作ってみました。 Unicode Normalization

    Unicodeの特殊な文字 “結合文字列” – ものかの
  • Pythonで日本語を含んだリストと辞書をpretty printしたい件 – taichino.com

    Pythonでコード書いてると、1回は残念だなぁと思うポイントとして表題の件があると思います。具体的には以下です。 # リストも辞書も出力がお世辞にも良いとは言えない。。 >>> print ['あ', 'い', 'う'] ['\xe3\x81\x82', '\xe3\x81\x84', '\xe3\x81\x86'] >>> print {'title':'ねじまき鳥', 'author':'村上春樹'} {'author': '\xe6\x9d\x91\xe4\xb8\x8a\xe6\x98\xa5\xe6\xa8\xb9', 'title': '\xe3\x81\xad\xe3\x81\x98\xe3\x81\xbe\xe3\x81\x8d\xe9\xb3\xa5'} 日語がバイト表現な上、全要素が1行で表示されています。これではちょっとprintデバッグするにも萎えますよね。複雑

  • Python 2 と Python 3 のユニコード文字列、バイト列の違いメモ - 銀月の符号

    Python 3 の数値をバイト列に変換する方法は bytes([i])*1。いままでとあきらかに違うことを知ったのが発端。 >>> bytes([97]) b'a' ユニコード文字列、バイト列の違いを調査開始。 型の名称とリテラル表記 Python 2.6 は新旧両方の書き方ができるものも。 Python 2.5以前 Python 2.6 Python 3.0 and 3.1 ユニコード文字列型 unicode unicode str バイト列型 str str or bytes*2 bytes 可変バイト列型 (なし)*3 bytearray bytearray ユニコードリテラル u'a' u'a'*4 'a' バイトリテラル 'a' 'a' or b'a'*5 b'a' メソッド メソッド関連は大差ない。 Python 3 では Python 2 の string.maketran

    Python 2 と Python 3 のユニコード文字列、バイト列の違いメモ - 銀月の符号
  • sys.stdout のエンコードを変更する in Python3.0 - @kei10in の日記

    課題 sys.stdout のエンコードを変更したい!!! 説明 sys.stdout のエンコードの変更は,Python2.6 までは >>> sys.stdout = codecs.getwriter('utf-8')(sys.stdout) >>> print u'ほげ' ほげ ってやります. これを,Python3.0 でやると, >>> sys.stdout = codecs.getwriter('utf-8')(sys.stdout) >>> print('ほげ') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python30\lib\codecs.py", line 356, in write self.stream.write(data) File "C:\P

    sys.stdout のエンコードを変更する in Python3.0 - @kei10in の日記