Learn about Moodle's products, like Moodle LMS or Moodle Worplace, or find a Moodle Certified Service Provider. Moodle.com Our social network to share and curate open educational resources. MoodleNet Courses and programs to develop your skills as a Moodle educator, administrator, designer or developer. Moodle Academy Moodle.com Learn about Moodle's products, like Moodle LMS or Moodle Worplace, or
2006年06月13日 Permalink Comments(0) TrackBack(0) ウェブ開発 phpでSJISテキストを扱うときの文字化け対策 日本語の文字コードには、JIS,SJIS,EUC,UTF-8 などあります。 unix系で通常、日本語を使用したテキスト(プログラムソース)はEUCで記述するようです。 windowsでは、SJISが主に使われています。 ところがSJISでは、2byte目が 0x5Cの文字で問題がおきます。 具体的には、次の文字になります。 「―ソЫⅨ噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭」 この文字集合をgoogleなどで検索すると山ほどヒットするので、詳細はそちらで調べてください。 実際にphpプログラムで対応したのが、以下の関数です。 ある程度の実績はありますが、もっと良い関数があれば参考にしたいと思っています。 /
Shift_JIS(SJIS, cp932) の文字コードで、2byte目が0x5c の \ になっているものの俗称(だめ文字、駄目文字) 0x5cの \ は使用するフォントやロケールによりバックスラッシュまたは¥記号で表示されます。 ダメ文字を含む文字列やパス、ファイル名を処理する場合には文字化け、検索不可など様々な不具合が起きることがあります。 ダメ文字には ー ソ 十 表 など、使用頻度の高いものもあるので cp932を扱う場合には注意が必要です。 また広義には2byte目が 0x7c のパイプ文字 | になっている文字や、2byte目が正規表現などのメタ文字と重なる文字も含む場合もあります。 ダメ文字問題は正規表現をはじめとする様々な言語、システムで制御用のメタ文字として扱われる文字と同じバイト列が、SJISの漢字の2byte目に含まれていることにより起こります。 特に 0x5c
いよいよ、0x5c問題について書きます。 まず、0x5c問題とは何かということですが、 とりあえず私は、「2バイト目に0x5cを含む文字が起こす問題全般」だと考えています。 この「2バイト目に0x5cを含む文字」は後述します。(・・・もう見えてるかもしれませんが(笑)) その中で今回書くのは英語版環境や日本語処理に問題がある環境で発生する問題です。 (文字コード指定可能な環境ならば当然文字コードを正しく指定しなければ問題が発生します。 言語が漢字(文字)コード指定を持っている(だったはず)のRuby言語では要設定確認です) ちなみに何で英語版は問題になるのかといえば、たいていの場合、1文字を2バイトで表すなんてこと自体、 考えて作られてないからです。(アルファベットだけなら1バイトで十分) 前回のASCIIコード表を見ていただけると分かると思いますが、0x5cは「\」です。 そして、「\」
「Smarty SJIS」でググるといくつか有益な情報が引っかかるので、それを見て簡単に対応できました。 もっとも、途中でSmartyとは1%も関係ないところでつまづいてしまって無駄に時間を使ってしまったのですが。。。 下記の例だと、plugins_dirにprefilter.pre01.phpとpostfilter.post01.phpのファイルを設置。autoload_filtersを使って自動でフィルタがかかるようにしています。 本体 require("/path/to/smarty"); $smarty = new Smarty; $smarty->template_dir = "/path/to/template_dir"; $smarty->compile_dir = "/path/to/compile_dir"; $smarty->plugins_dir = "/path/t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く