• 締切済み

webサイトの入力で許可する文字(UTF-8)

webサイトのフォーム(utf-8)にて入力チェック時に許可する文字列を皆さんはどうされていますか? 一般的な日本語英語数字記号程度のみを許可していると、入力チェックではじかれまくって使い物になりません。とはいえフルフルでスルーはしたくありません。 どういう考えでどうやってるか事例をお聞かせ願えれば助かります。

みんなの回答

  • 4017B
  • ベストアンサー率73% (1305/1776)
回答No.1

そのwebサイトの性質によりますが、不特定多数の非技術者系のUserを想定するのであれば不許可文字列を弾くのでは無く、不許可文字列を全て安全な文字列へ強制置換する方法が一番簡単確実ですかね。 基本的には「& ' " <>」をエンティティして置けば文字化けは起こしてもスクリプト上の不具合は防げますので、後はスマホとかから入力されやすい絵文字を問答無用に ◆ みたいなPC上でも問題無く表示可能な文字に一律に強制置換ですね。 利用者層に絵文字を多用する文化が有るのであれば、別途に個別に安全な画像ファイルに置き換え等の処理が必要になるかも。

muuming2001
質問者

お礼

エスケープ処理をすれば表示時の不具合は防げますね。絵文字はwebfontで解決ですね。 http://tmtms.hatenablog.com/entry/20110510/sanitize_utf8 こういうこともあるので、サニタイズしてた方が良いのかな、と思ってますが、必要ない?

関連するQ&A

  • UTF-8での入力文字数について

    少し一般的な質問ですが、よろしくお願いいたします。 UTF-8でコードを書いているのですが、フォームからの入力文字数のチェックのところで、どうするべきか迷っています。 フォームからの文字数の制限は、「全角10文字・半角20文字以下」のようにするのが一般的かと思いますが、UTF-8の場合、皆さんはどのような文字数の制限にされているのでしょうか? 「全角10文字、半角30文字以下」 もしくは 「10文字以下」のように指定しているのでしょうか? ご意見、アドバイス等、お願いいたします。

  • Perl UTF8 での全角カタカナチェック

    ■環境 Linux, Perl 5.8 です。 画面(HTML)と処理(Perl)は分けて作成しており、Templateモジュールで画面表示を行っています。 HTMLもPerlも文字コードはUTF-8です。 ■質問 フォームからうけとった文字列で全角カタカナと特定の全角記号以外はエラーとする 入力チェック処理(正規表現)がうまくチェックを行ってくれません。 SJISだと以下のような書き方があるそうなのですが、UTF8での書き方がわかりません。 ・SJIS if($data !~ /^(?:\x83[\x40-\x96])+$/){ $mes="全角カナ以外の文字が指定されています"; } UTF8での書き方を教えて頂きたいです。 なお、許容する全角カタカナと特定の全角記号は以下のとおりです。 ========================================================== アイウエオカキクケコサシスセソタチツテトナニヌネノ ハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン ァィゥェォッャュョヵヶヴガギグゲゴザジズゼゾダヂヅデド バビブベボパピプペポーヽヾ ========================================================== ご教授お願い致します。

  • 例えば住所入力が必要なWebの登録フォームの中に、

    例えば住所入力が必要なWebの登録フォームの中に、 「数字は全角で入力して下さい」のような指定があるものをよく見かけます。 この程度の文字列変換は極めて容易なはずですが、一体どのような意図があるのでしょうか。

  • フォームへの誤った文字入力を阻止したいのですが。

    フォームにメールアドレスが入力された際に、メールアドレスとして許可されたものでない文字や記号は入力されないようにするか、あるいは入力は許しても送 信されないようにするJavaScriptは可能でしょうか?可能でしたら、そのScriptをお教えくださいませ。

  • 文字参照からUTF-8への変換

    MySQLデータベース上にlatin1の文字列データが格納されています。このデータは、具体的には&#nnnnn;のような10進型文字参照の連続です。ウェブアプリケーションを介してブラウザー上では日本語、中国語、アラビア語その他言語の文字列として表示されます。 このデータをUTF-8に変換し、新たなフィールドに格納するためには、どのようにしたら良いでしょうか。MySQLだけで平易に解決できるならそれに越したことはないのですが、PHPまたはASP.NETによるソリューションでも構いません。

    • ベストアンサー
    • MySQL
  • Perl UTF8 での氏名チェック

    ■環境 Linux, Perl 5.8 です。 画面(HTML)と処理(Perl)は分けて作成しており、Templateモジュールで画面表示を行っています。 HTMLもPerlも文字コードはUTF-8です。 ■質問 フォームからうけとった文字列で以下の文字以外をエラーとする入力チェック処理(正規表現)をUTF8用に作りたいです。 ・漢字 ・ひらがな ・全角記号(ー-のみ) ・全角スペース ・全角カタカナ(http://okwave.jp/qa4997637.html) 直前の全角カタカナチェック(http://okwave.jp/qa4997637.html)と類似しているのですが、別に質問させていただきました。 色々探してみたのですが、UTF8でそのようなチェックモジュールが見つからず、 正規表現で書くしかないのかと思い、正規表現でも書いてみましたがうまくいきませんでした。 チェックモジュールが存在するのであれば教えて頂きたいです。 または、以下のようなシンプルな書き方(以下はUTF8ではなくSJISの全角カタカナチェックですが)があればご教授頂きたいです。 また、文字コードの対応(例えば\x40が何の文字にあたるか)がUTF8で分かれば応用がきくのですが、 それも見つからなかったので、対応表、調べ方をご存知の方がいらっしゃったらご教授頂きたいです。 ・SJISの全角カタカナチェック if($data !~ /^(?:\x83[\x40-\x96])+$/){ $mes="全角カナ以外がありますよ"; } よろしくお願い致します。

  • UTF-8によるマルチリンガル

    UTF-8は多言語表示ができますが、日本語、ドイツ語、フランス語、中国語、韓国語、インド系、アラビア系などキリがないほど文字の種類があると思うのですが、全ての文字の文字コードを持っているのでしょうか?それとも、ロケールを見て切り替えなどを行っているのでしょうか? また、 UTF-8ベースのWEBアプリを使用時に日本語を入力するとき、UTF-8で入力するなど、意識する必要があるのでしょうか?普通ウィンドウズを使用するとシフトJISで入力するのかと思います。 もし意識しないので良いのであれば、どういうメカニズムなのでしょうか?

  • Webサイトで文字化けするのですが、、

    Webサイトを作成している初心者です。 metaタグの「Charset」の属性について質問します。 参考書では、<meta charset="UTF-8">でうまくいくように例示されているのですが、 私のPCで同様に入力するとページ全体が文字化けします。 <meta charset="Shift-JIS">とすると日本語を正しく表示します。 原因はどこにあるのでしょうか? よろしくお願いします。

  • 特殊文字入力方法

    よくわかってなくての質問ですが、お願いします。 UTF-8などで定められた通常の文字以外コード以外にスマホなどでは顔文字などを通常の文字で使ってないコード番号に当ててると思ってます。 この顔文字などの文字コードをPCで入力するにはどうしたらよいでしょうか? WEBサイトのフォームとかに入力したいです。

  • Malformed UTF-8 character

    あるWebシステムで、エラーログに「Malformed UTF-8 character」が大量に出力されています。 意味はわかるのですが、どんな文字列がエラーになっているか分からないので、デバッグできず困っています。 # 全てのアクセスで必ず通るロジックなので、入力文字列を無条件にダンプするわけにも行きません。 もし、「Malformed UTF-8 character」になる見込みの文字列だけダンプするなど、効率的なデバッグ手段があれば、教えていただけますでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう