サポート » 自作品の告知 » 機種依存文字の検知

  • typista

    (@typista)


    記事投稿時にタイトルまたは本文に機種依存文字が無いかチェックするプラグインです。
    「保存」「公開」ボタンを押したときにJavaScriptにてチェック機能が走ります。

    チェックアルゴリズムを始め、まだまだ改良の余地はふんだんにありますので、バグやリクエストなどは、このトピックか、私のブログにて以下のカテゴリアーカイブをチェックいただけると幸いです。
    http://typista.xii.jp/category/wordpress/plugins/x-charactercode-validator

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    「機種依存文字」の定義は何でしょう? それが明確でないとプラグインの価値がないと思いますので、ご説明をお願いいたします。プラグインの根幹をなす話なので「リンク先を見よ」ではなく、この場に書くべきだと思います。
    少なくとも、WordPress 2.3 以降では UTF-8 が標準になっており、Shift_JIS において「機種依存文字」と言われていた丸数字、ローマ数字やかっこ株などは問題なく使えるため、(従来の意味における) 機種依存文字ではありません。

    typista

    (@typista)

    > 「機種依存文字」の定義は何でしょう?

    おっしゃるとおり、UTF-8が標準の場合、過去の遺産的な位置づけなのかもしれません。

    ただし、もともと、このプラグインを作ろうとしたのは、日本の携帯電話ではShift_JISが標準のため、古い機種ではShift_JISの機種依存文字(というよりNEC依存 or IBM依存?)が正しく表示されない現象があったためです。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    ただし、もともと、このプラグインを作ろうとしたのは、日本の携帯電話ではShift_JISが標準のため、古い機種ではShift_JISの機種依存文字(というよりNEC依存 or IBM依存?)が正しく表示されない現象があったためです。

    これは「プラグインの目的」ですよね。で、肝心の「定義」は何なのでしょうか (上記によると「NEC 外字」と推測できますが)。

    このプラグインの場合、情報が必要だと思います。フォーラムで回答頂くか、今後のリリースで附属 README に記載するかでお願いします。
    ・「機種依存文字」とは何か (「NEC 外字」なのか、「JIS X 0201, JIS X 0208 に属さない文字」なのか etc)。
    ・「機種依存文字」があるとどういう問題が発生するか。
    ・どういう場合「機種依存文字」を除去する必要があるか。

    せっかくご紹介頂くのですから、「どういう人に必要なのか」「こういう場合には要らない」が分かるように、詳細を記載願います。コードだけではなくドキュメントも重要ですよ。

    typista

    (@typista)

    レスが遅くなり大変、失礼いたしました。

    せっかくご紹介頂くのですから、「どういう人に必要なのか」「こういう場合には要らない」が分かるように、詳細を記載願います。コードだけではなくドキュメントも重要ですよ。

    lilyfanさん、的確なご指摘ありがとうございます。

    機種依存文字の定義は、

    ホワイトリスト方式で、半角~第1水準漢字~第2水準漢字の一部までを許可

    となります。が、一次回答ですが、
    これは私の中でも機種依存文字の定義(解釈)が迷走しているためで、他の方の定義とコードを拝借した程度の、かなり私の立場としては、無責任なプラグインになってしまっております。

    「携帯電話での表示で文字化けしないこと」が、あくまでも私の本来の目的ですので、今後もう少し勉強して、定義を明快にしたいと思います。

    WordPress本体バージョンと実証結果などもアナウンスできておらず、手落ち感が強いですが、少なくとも時間がかかっても懲りずにバージョンアップを重ねていくつもりですので、次の制限事項を了承の上、利用・検証・カストマイズして、使っていただければ嬉しいです。
    もっとも欲を言えば、私よりも先に目的を達成するアルゴリズム→コードを実装される方がいらっしゃれば、幸いな限りです。

    ◆制限事項
     1.機種依存文字の定義
       現定義では「半角~第1水準漢字~第2水準漢字の一部」以外となります。
       第2水準漢字の「一部」という点に、曖昧さが残っております。
       ※上記のとおり、今後、時間はかかりますが、正確に定義をご説明できるように、
        また、それに準じた実装を目指します。

     2.バージョン等の環境
       動作検証は、WordPress2.5.1のみです。
       OSはWindows XP、ブラウザはInternetExplorer6/7、FireFox2.0.14です。
       ※Macintoshのご報告をいただけると嬉しいです。

    モデレーター IKEDA Yuriko

    (@lilyfan)

    このフォーラムは元来議論の場ではないのですが、作者さんが「バグやリクエストなどは、このトピックか、私のブログにて以下のカテゴリアーカイブをチェックいただけると幸いです。」と書いておられるので、ここで続けることにします。

    「携帯電話での表示で文字化けしないこと」が、あくまでも私の本来の目的ですので、今後もう少し勉強して、定義を明快にしたいと思います。

    なるほど。目的と定義がだいたい分かりました。そうなると、「携帯電話で表示させるツール」によってチェックすべき文字の扱いが違ってくるように思います。

    日本製ツール (Mobile Eye, Mobile Eye+, Ktai Style, MobilePress) は、PHP の mb_convert_encoding() を使って UTF-8, EUC-JP を Shift_JIS に変換しています。したがって、PHP の mbstring で扱えない文字が「機種依存文字」となるでしょう。mbstring では純粋な Shift_JIS 以外に MS 拡張を含む SJIS-win (cp932) が使えますが、後者を使うと丸数字やかっこ株も扱えてしまいます。

    海外製ツール (WordPress Mobile Edition など) は、文字コードの変換はせずにスタイルシートやナビゲーションの改善を行うだけです。このため、携帯端末側が UTF-8 に対応している必要があります。日本の携帯電話の多くは内部コードが Shift_JIS (というか cp932 かも) なので、端末が持つ UTF-8 → Shift_JIS の変換機構に対応していない文字が「機種依存文字」となるでしょう。悲しいことに、WAVE DASH が化けてしまうことが多いようです……。(FULLWIDTH TILD の方がニセ物なのに)

    mb_convert_encoding() に対応していない文字という定義ならば、PHP コードを走らせるだけでよいので検出は比較的簡単でしょう。後者の「端末で対応していない文字」というのは調査が非常に難しいため、対応は困難だと思います。

    文字コードについて勉強するならば、「CJKV日中韓越情報処理」(フグ本) を一読することをおすすめします。残念ながら PHP の mbstring や Perl の Encode モジュールについては記載されていないため、別途 PHP マニュアル等を参照する必要があるでしょう。

    typista

    (@typista)

    「端末で対応していない文字」というのは調査が非常に難しいため、対応は困難だと思います。

    想像を絶する調査になるでしょうね(^^;
    私の発想では、なので携帯で文字化けしかねない文字を除外したいと考えていました。
    実際、SoftBankの古い機種だったと思いますが、No.(Shift_JISの0x8782)が化けていたか、表示されないかという現象がありました。

    文字コードについて勉強するならば、「CJKV日中韓越情報処理」(フグ本) を一読することをおすすめします。

    かなり高価な本ですが、図書館で探すなどして一読しようと思います。
    とにかく丁寧な解説、ありがとうございました!

    残念ながら PHP の mbstring や Perl の Encode モジュールについては記載されていないため、別途 PHP マニュアル等を参照する必要があるでしょう。

    そう思います。マニュアル類は頻繁に見ています。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「機種依存文字の検知」には新たに返信することはできません。