タグ

文字コードに関するjay777のブックマーク (19)

  • いいから聞け! 俺が文字コードについて教えてやるよ その1(前提知識編) - 谷本 心 in せろ部屋

    ちょっと久々のJavaネタですが、 前から書き溜めていた、文字コードやエンコードについてのノウハウを書きます。 今回は、詳細な説明に入る前に、前提になる知識や用語について説明しておきます。 文字コードとエンコードって違うの? 新人くん「では、HTMLの文字コードはUTF-8でお願いします」 先輩社員「文字コードじゃなくてエンコーディングでしょ?」 新人くん「えっ。あぁ、はい、それで」 文字コードとエンコード(エンコーディング)を混同して使ったりすると、 ちょっと原理主義的な人に怒られたりするんですけど、 大まかに言えば、「文字コード」は文字に割り当てられた「数字」のことで、 「エンコード」は文字と数字をマッピングする「方式」のことだと捉えていれば、大きくは外れません。 ただ、「文字コード」という言葉は、「数字」「方式」の両方で使われるほか、 文字一覧を示す「Charset」という意味で使わ

    いいから聞け! 俺が文字コードについて教えてやるよ その1(前提知識編) - 谷本 心 in せろ部屋
  • Ruby 1.9 で日本語 (UTF-8 の文字列) を正しく表示させる方法 - さよならストレス

    Windows 環境でコマンドプロンプトを使って日語を表示させようとして躓いたのでメモ。ソースコードを UTF-8 で書きたい人を対象にしています。 環境 Windows7 コマンドプロンプトデフォルトのままでコードページ 932 Ruby 1.9.2-p136 まとめ 先にまとめを書いておきます。 ソースコードを UTF-8 (BOM 無し) で書く。 ソースコードのエンコーディングを正しく判断できるように -*- encoding: utf-8 -*- をソースコードの先頭に書く ruby のオプションで -U を使うか、-Eexternal_encoding:internal_encoding を使う File.open する時は、デフォルトの外部エンコーディングで読みに行くので、オプションで適切なエンコーディングを指定する 例: File.open("test.txt", "r:

    Ruby 1.9 で日本語 (UTF-8 の文字列) を正しく表示させる方法 - さよならストレス
  • Free Dynamic DNS(DDNS) by POP3,IMAP4,FTP,HTTP-BASIC for Home Server, VPS | MyDNS.JP

  • Perl Tips: Encode モジュール簡単な使い方

    Perl 5.8 から標準で Encode モジュールが含まれるようになりました。いままで jcode.pl や Jcode.pm を別途インストールしていたのですが、その手間が省け精神的にも楽です。そして何よりも変換速度は早いようです。 Perl 5.8 からは文字コードの取り扱いが変わったようで、Perl 内部で独自の文字コード管理をしております。( 内部的には Unicode? ) Encode モジュール簡単な使い方-てすと Encode モジュールは、 ・Perl 内部文字管理 => Encode モジュール => 出力 ( printf 等 ) というようにフィルタとしても動作することが可能なようです。 新しく実装された( ? ) PerlIO というものを経由して open 関数でも使用できます。 TIPS として書いてますが、よく使い方が分からない所があり、ここに書いてある

  • JavaScript++かも日記 - 1997年からの

    Testnetがアップデートされたのは知ってたけれど、libra-authのデモも動かなくなったのでちょっと調…

  • [J] Perl の日本語処理いろいろ (最近の書き方とか) - Jamz (Tech)

  • 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 $

  • Perlメモ/日本語の扱い - Walrus, Digit.

    Perlで日語を使用するとき、正しく動かなくなる代表的なケースは次の2点です。 日語を扱う時、文字コードを意識していない。 正規表現で、日語の文字列を使うとエラーが出る。 日語を扱う時には、文字コードを意識する必要があります。 代表的な文字コードには「7ビットJIS」「SJIS(シフトJIS)」「EUC(日語EUC)」「UTF8(Unicode)」があります。 厄介なのは、同じ言葉でも、文字コードによってコンピューター内部での表現が違うことです。 例えば、WebブラウザからSJISで送られてきた「塚」という言葉と、EUCコードのスクリプト中で設定した「塚」という言葉を比較すると「別物だよ」という結果が出ます。 こうした問題が起きないように、普通は、以下のことに気をつけてスクリプトを作ります。 スクリプトを書くときに、どの文字コードを使うか決めておく。 データの入出力(CGIの

  • UTF-JP

    UTF-JPの特徴 UTF-JPは、UTF-8と同様に、1バイト単位で可変長の多バイト文字を構成し、理論上、全てのUNICODE文字を表せますが、日語テキストを扱うのに特に優れています。 UTF-JP符号では、ASCII文字(0x00-0x7f)は、1バイト、日語のうち、JIS第一、第二水準の文字は、2バイト、その他のUNICODE文字は、3バイト以上で表されますので、UTF-8と比べて、日語を短い符号で表せます。 また、UTF-8同様、テキストを逆戻り可能であり、検索する際も、多バイト文字の途中でヒットすることを簡単に防ぐことが可能です。 日語の部分は、JIS符号と対応関係のある符号が割り当てられますので、UNICODEへは、変換テーブルを介する必要がありますが、日語以外の部分は、UNICODEへ直接対応付けることが出来ます。 UCS-2までは、最大3バイトで、UCS-

  • RubyでCGIプログラミング<エンコーディング> @ SEのポケット

    ものすごくハマりそうになったので、忘れないうちに記録しておく。 今の開発環境は下記のようなバージョン。 # ruby -v ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]  これで、 #!/usr/local/bin/ruby print “Content-type: text/html\n\n” #ライブラリ読み込み require “cgi” input = CGI.new print <<EOM <HTML> <HEAD> <meta http-equiv=\”Content-type\” content=\”text/html; charset=utf-8\” /> <TITLE>Ruby-CGI TEST Page</TITLE> </HEAD> <BODY> <H1> HelloWorld!

  • JavaScriptの基礎からはじめよう - JavaScript講座

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

  • 文字コードのイジワルジイサン - 檜山正幸のキマイラ飼育記 (はてなBlog)

    若者:「これは半角アルファベットで…」 檜山:「ちょっと待て、半角ってなによ、半角って?」 若者:「えーと、半分という意味かと」 檜山:「なにが半分?」 若者:「幅が半分のことです」 檜山:「幅のことだよね。だけどさ、文字の幅ってレンダリングの問題でしょ。フォントやレイアウトでどうにでもなるじゃん。半角って何を基準に半分なの? それ何ポイント? それ何ミリ? ピクセルでなんぼ?」 若者:「ほんとの幅のことじゃないですよ。1バイト文字のことです」 檜山:「イチばいとぉー? 文字が1バイトって、なにそれ?」 若者:「1文字が1バイトのデータで…」 檜山:「さっきアルファベットって言ってたよね。例えば'a'とか'b'とか、そんな文字のことだよね」 若者:「そうです」 檜山:「'a'が1バイトなの?」 若者:「はい」 檜山:「UTF-16でも'a'が1バイトのデータなの?」 若者:「あっ、いえ。1

    文字コードのイジワルジイサン - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 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のメンテナの弾さんから、ご指摘いただいたので、

  • @ARGVにUTF8フラグをたてる - Practice of Programming

    @ARGVには、普通UTF8フラグはつきません。どうやってフラグをつけるのか調べてみました。 その後、ブックマークコメントを見て、モジュール探したら見つけましたんで、追加しました。 -C か環境変数でやる こちらで見つけました. 起動オプション-Cか環境変数PERL_UNICODEにAを与えてやります。 perl -CA -e 'print utf8::is_utf8($ARGV[0]);' あああ PERL_UNICODE=A perl -e 'print utf8::is_utf8($ARGV[0]);' あああ -CやPERL_UNICODEが取れる値は、perldoc perlrun にあります。以下、抜粋。 -C [number/list] The "-C" flag controls some Unicode of the Perl Unicode features. As o

    @ARGVにUTF8フラグをたてる - Practice of Programming
  • セキュリティ専門家でも間違える!文字エンコーディング問題は難しいのか?

    (Last Updated On: 2018年8月13日)一見徳丸さんのブログは分かりやすいように思えますが、それは単純な実験により分かりやすいように見えるだけで複数の間違いがあります。 その間違いとは 意図の取り違い – 誤読 言語の仕様と実装の理解不足 HTTPやPHP仕様の理解不足 セキュリティ対策をすべき場所の理解不足 です。(※0) 徳丸さんは非常勤とは言え、国の出先機関の研究員であるし、その出先機関は職務放棄とも言える文書(「例えば、PHPを使用しない」と勧める文書)を公開している(いた?)のでしっかり反論しておく必用がありますね。IPAのあの文書は職務放棄と言える文書だと思っています。これについても後で意見を述べます。 意図の取り違い – 誤読 最初の間違いは私のブログのエントリ「何故かあたり前にならない文字エンコーディングバリデーション」に対する理解です。特にPHPユーザに

    セキュリティ専門家でも間違える!文字エンコーディング問題は難しいのか?
  • PHPが文字エンコーディング攻撃に強い理由 – HTMLエスケープ

    (Last Updated On: 2018年8月13日)PHPが文字エンコーディング攻撃に比較的強い理由は入出力の文字エンコーディングのバリデーション(サニタイズ)が行えるだけではありません。PHPが提供するHTMLエスケープ関数が文字エンコーディング攻撃に対して強い事も理由の一つです。 PerlHTMLエスケープと言えば、<,>,&,”,’をエンティティ変換するコードが一番に見つかります。 「perl html escape」でググると一番に見つかったページは次のページです。このページではまだ3バイトEUCの場合の例、CGIモジュールを使った例も載っているので良い方でしょう。 http://saboten009.blogspot.com/2008/04/perlhtml-xss.html 少し前にPerl, Ruby,Pythonユーザは検索で有用なセキュリティ情報を得られるのか?と

    PHPが文字エンコーディング攻撃に強い理由 – HTMLエスケープ
  • UTF-8の冗長なエンコードとは何で、なんでそれがセキュリティ的に危ないのか?を文字コード知識レヴェル3くらいの凡プログラマが考えてみる - tohokuaikiのチラシの裏

    何故かあたり前にならない文字エンコーディングバリデーション | yohgaki's blog ってあるように、いまいち文字コードの不正な判定による危険性ってのが分かってない。 SJISの問題は、(2/3)SQLインジェクションを根絶!セキュア開発の極意 - 第5回■注目される文字コードのセキュリティ問題:ITproの記事がわかりやすかった。 というか、やっぱりPHP使ってると誰でも一度は「なんじゃこの『¥』は?」って思うもんなんで。 なるほど、確かに↓の図のように「あるバイト」が2つの意味を持つっていう文字コード形態はやばいんだなと。 EUC-JPはそんなことはしないで、1つのバイトには1つの意味しか取らせない。 だけど、これでも文字化けが起こることがある。経験的には、「マルチバイトをXX文字で切り落としたい」とかやった場合。ちゃんと文字コードを判定してくれるPHPでいえばmb_subst

  • 何故かあたり前にならない文字エンコーディングバリデーション

    (Last Updated On: 2018年8月8日)私が4年前(2005年)に「Webアプリセキュリティ対策入門」を執筆していた時には、既に壊れた文字エンコーディングなどの不正な文字エンコーディングを利用したJavaScriptインジェクションやSQLインジェクション攻撃は比較的広く知られていました。この問題は当時のスラッシュドットジャパンでも取り上げられていました。/.で取り上げられたので、そこら中のWebサイトとユーザが被害に合うのでは?とヒヤヒヤしたので良く覚えています。 不正な文字エンコーディングを利用した攻撃は、文字エンコーディングを厳格に取り扱い、文字エンコーディングをバリデーションすれば無くなります。これを怠ると、システムのどこで問題が発生するか予想できなくなります。つまり、いい加減に文字エンコーディングを取り扱うと安全なシステムは作れないのです。 参考:エンジニア向けに

    何故かあたり前にならない文字エンコーディングバリデーション
  • 1