• 締切済み

phpかVBで環境依存文字 チェック

phpかVBで環境依存文字 チェックのロジックを教えて下さい。 「環境依存文字 チェック」で検索するとWEB上でチェックしてくれるサイトは山ほどみつかりますので、一般的に知られたロジックがあるのではと思っています。 http://www.mis.med.akita-u.ac.jp/~kata/works/izonmoji/check.html https://www.submit.ne.jp/tools/check http://www.octalserve.gr.jp/cgi-bin/w-bank/kisyu.cgi ありものがネットで拾えれば嬉しいです。

みんなの回答

回答No.2

UTF8の文字列をSJISに変換、再度UTF8に変換して文字列の長さを比較してチェックするという方法があるようです。 if( strlen($str) !== strlen(mb_convert_encoding(mb_convert_encoding($str,'SJIS','UTF-8'),'UTF-8','SJIS'))) { echo "依存文字です"; } https://gist.github.com/mgng/2090375

  • chie65535
  • ベストアンサー率43% (8522/19371)
回答No.1

以下の記事が参考になります。 http://qiita.com/rukihena/items/1a9eba1762464a226325

関連するQ&A

  • IMEで環境依存文字を使いたくありません

    IMEはMicrosoft Office IME 2007 です。 例えば、”でんわ”を変換すると、一番最初に”電話”ではなく 電話機の記号のような環境依存文字が候補の最初に出てきます。 学習機能がキチンと機能してくれれば、そのうち直るのでしょうが、 その辺の不具合情報も目にしますので、思い切って環境依存文字が 出ないようにしたいのですが、うまくいきません。 IMEのプロパティの変換タブの詳細設定から ”JIS X 0208 文字で構成された単語/文字のみ変換候補に表示する” にチェックを入れて、”外字の入力を許す”にもチェックを 入れたのですが、状況は変わらずじまいなのです。 どなたか、解決策をご存知の方お教え下さい。 よろしくお願いします。

  • 機種依存文字の見つけ方

    テキストエリアに入力したデータ内に 機種依存文字があるかないかをチェックするCGIを作りたいのですが 参考になるページやサンプルソースはないでしょうか? よろしくお願いしますm(_ _)m

    • ベストアンサー
    • CGI
  • 環境依存文字が印刷できなくなりました

    ■製品名を記入してください。 【DCP-J978N        】 ■どのようなことでお困りでしょうか?  相談したいこと、トラブルに至った経緯、試したこと、エラーなどを教えてください。 【以前は印刷できていましたが、環境依存文字が印刷できなくなってしまいました。パソコン上では、文字が表れていますが、プリントすると・となってしまいます。「詳細な印刷機能を有効にする」のチェックを外して印刷をしてみましたが、ダメでした。よろしくお願いします。】 ■お使いの環境について教えてください。 ・パソコンもしくはスマートフォンのOSは何ですか? (例)Windows10/8.1/7・MacOS・iOS・Android 【Windows10 】 ・どのように接続されていますか? (例)有線LAN・無線LAN・USBケーブル・bluetooth 【無線LAN       】 ・関連するソフト・アプリがあれば教えてください。 【WPS office        】 ・電話回線の種類は何ですか? (例)アナログ回線・ISND回線・ひかり回線・IP電話 【ひかり回線  】 ※OKWAVEより補足:「ブラザー製品」についての質問です。

  • 環境依存文字の「ハート」マークを送信すると文字化け

    フォームの入力欄に環境依存文字の「(ハート)」マークを入力し、「送信」と表示されたボタンを押すと、 画面上のボタンは全て消えてしまい、「(ハート)」マークと入力した欄には、「⊇」と表示されて他の入力欄に表示されるはずの日本語文字が文字化けした状態で表示されます。 (表示のみとなる日本語部分や半角表示部分は文字化けしていません。) 「送信」を押された場合のロジックにprint($_POST['submit']);でボタンの名称表示を入れてみると「送信」ではなく「瘧竅」と表示されます。 「送信」ボタンのhtmlソースは、次のような書き方です。 <input name="submit" value="送信" type="submit" /> ちなみに、「(ハート)」マークを入力するとハート文字の選択肢が表示されて、「(ハート)」マークの右隣には、環境依存文字(unicode)表示されます。 また「(ハート)」マーク以外の環境依存文字の(株)や普通の日本語は全く問題なく処理ができますし、「送信」押してもprint($_POST['submit']);の結果は「送信」となります。 「(ハート)」マークと入力して送信を押した場合でも、ボタンが消えず、「送信」を押しても$_POST['submit']の中身が「送信」となるようにするにはどうしたらよいのでしょうか? ■各種設定 http://hain.jp/index.php/tech-j/2007/02/13/%EF%BC%B0%EF%BC%A8%EF%BC%B0%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91のページを参考に設定しました。 (1)HTMLの<HEAD>タグ内への記述 <Meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> (2)php.iniの設定 mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = pass mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.detect_order = EUC-JP,SJIS,JIS,UTF-8,ASCII mbstring.substitute_character = none; ;default_charset = "Shift_JIS" (default_charsetはコメントにしてあります。) ■環境 windows vista xampp/apache 2.2.4 PHP Version 5.2.3

    • ベストアンサー
    • PHP
  • エクセル 白丸文字と黒丸文字の重複チェック

    S41(S41:AI47)のセルに下記のような丸文字があります。 (↓文字化けしてました)  (1)❷ (3)(4)(5)(6)(7)❽ (9)  以後、()は○だと思ってください。❷は黒丸2 ❽は黒丸8 です。   やりたい事: 1) このS41のセル内の重複チェックしたい。(AK41 辺りに重複 の表示) 只、(2)❷など白丸文字と黒丸文字 は同じ値とし、チェックしたい(例 (2)❷ =重複)  (この丸文字は単語登録してありますので、➀(1)といった類似文字を間違って入力する事はないと思います。) 2) (1)~(9)の数値が全部入力されているかの確認をしたい。 1)に関しては安易な考えなのですが可能なのであれば、(そもそもこのようなマクロは無いかもしれませんが)(1)=1 (2)=2 ❷=2と置き換えてAL41のセルに入力できるようにし、AL41を重複チェックしたら良いのか?など思っています。 優先的には、1)を重視したいです。  エクセル2003を使用しています。 (2007でないとできないというのであれば 何とか成功させたいので2007導入も検討します) 環境依存文字で難しいのかもしれませんがよろしくお願いします。

  • UTF-8で書いたperlのパスが正しく読まれない

    元々htmlファイルもcgiファイルもShift-JISで書いていました 英語環境に変えようと、UFT-8にすべくEncordingConverterでファイルを変換しました htmlファイルは文字コード指定も当然UFT-8にし、アップして表示させてみたところ問題なく表示されました しかし、cgiファイルの方が正しく表示されず、perlチェックをしてみたところパスが ・ソ#!/usr/bin/perl となっていました これが原因で正しく表示されなかったようです そこでcgiファイルをテキストエディタで開いてみたのですが、そのエディタ上では #!/usr/bin/perl と本来あるべき正しい表示になっています 文字コードもUTF-8形式になっています どうしれやればきちんと読み取ってもらえるのでしょうか? エディタで開いても「・ソ」の部分が表示されないのでなおしようがなく困っています どなたか解決方法お分かりの方ぜひご教授ください よろしくお願いします

    • ベストアンサー
    • CGI
  • RedHat9/Apache1.3でCGIが文字化け

    サーバマシンにウェブサイトで公開されているCGIプログラムをDLし、cgi-binディレクトリに置いて動かそうとしたのですが、文字化けします。 ネットワーク環境は、1台のルーターの下にサーバマシン1台(OS:RedHat9,Webサーバ:Apache1.3.33, IP:192.168.1.10)、クライアントマシン数台(OS:Windows 2000, IP:192.168.1.*)となっています。 まず、Kent Webさんのサイトhttp://www.kent-web.com/から掲示板「プチ☆ボード」をサーバマシンにDLし、httpd.confのScriptAliasで設定したcgi-binディレクトリに設置したところ、動作はするものの文字化けしてしまいます。 サーバマシンのMozillaから書き込んでみると、サーバマシンからでもクライアントマシンのIEからでも日本語は文字化けします。クライアントマシンから書き込んでみると、サーバマシンでもクライアントマシンでもその書き込みだけは文字化けしません。 同じくKent WebさんにあるDiary Note(気まぐれ日記)というCGIをDLし設置してみると、文字化けでタグが壊れているのか、トップページは表示されるもののリンク先へ飛びません。別ファイルから読み込むメッセージの部分だけは日本語で正しく表示されますが、他の部分はすべて日本語は文字化けしています。 テキストエディタでdiary.cgiファイルを開いてみると、日本語部分は文字化けしています。 そこで、一度クライアントマシンにプログラムをウェブサイトからDLし、FFFTPでASCIIモード、EUCコードに設定してdiary.cgiファイルをサーバマシンへアップロードしてみました。すると、テキストエディタで開くと日本語部分が正しく表示されるものの、cgi-binディレクトリにそのファイルを置いてブラウザからアクセスしてみると、やはり文字化けして動作しません。 どうすれば表示・動作が正しくなるのでしょうか?

  • Base64での送信でタイトルが環境により文字化け

    CGI(Perl)のメールフォームで、 Base64エンコードでメール送信をするときに、 特定の文字列の組み合わせをエンコードしたものが、 環境によりタイトルだけ文字化けする現象が発生します。 GmailとWindowsメールで文字化けし、 Thunderbirdだと文字化けしないのですが、 原因と対応がわかる方がいれば教示いただけませんか。 Shift_JISの5Cなどとは根本的に異なりそうですが・・・ 以下、いくつかテストした文字列です。 「XXX」お問い合わせを受け付けました ↓ Subject: =?iso-2022-jp?B?44CMWFhY44CN44GK5ZWP44GE5ZCI44KP44Gb44KS5Y+X44GR5LuY44GR44G+44GX44Gf?= Gmail:文字化け Windowsメール:文字化け Thunderbird:文字化けせず お問い合わせを受け付けました ↓ Subject: =?iso-2022-jp?B?GyRCJCpMZCQkOWckbyQ7JHI8dSQxSVUkMSReJDckPxsoQg==?= Gmail:文字化けせず Windowsメール:文字化けせず Thunderbird:文字化けせず 「XXX」おい合わせを受け付けました ↓ Subject: =?iso-2022-jp?B?GyRCIVYbKEJYWFgbJEIhVyQqJCQ5ZyRvJDskcjx1JDFJVSQxJF4kNyQ/GyhC?= Gmail:文字化けせず Windowsメール:文字化けせず Thunderbird:文字化けせず 「お問い合わせを受け付けました」 ↓ Subject: =?iso-2022-jp?B?GyRCIVYkKkxkJCQ5ZyRvJDskcjx1JDFJVSQxJF4kNyQ/IVcbKEI=?= Gmail:文字化けせず Windowsメール:文字化けせず Thunderbird:文字化けせず 特定の一文字の問題ではないようなのですが・・・ またプログラム(一部抜粋)では下記のように変換しています。 ########################## use MIME::Base64; if($str =~ /[^!-~\s]/){ $str = encode_base64($str, ""); $str = '=?iso-2022-jp?B?' . $str . '?='; } ########################## よろしくお願いします。

    • ベストアンサー
    • CGI
  • 秀丸で文字化け

    以前まで秀丸で作成していたCGIファイルがいきなり秀丸で開いてもすべて日本語が文字化けしている状態になってしまいました。 ノートパッドで開いても当然のごとく文字化けします。 動作環境の編集より、 自動認識にチェックも入っているのですが、 それでも文字化けのままです。 EUCコードや、shift-JISの設定を少し別のファイルを作成するときにいじくったのが原因だとは思うのですが、戻せなくて悩み続けています。

  • パーミッション 777 or 755?

    お世話になります。 このカテゴリかどうかは、かなり怪しいですがよろしくお願いします。 まず、環境ですが マシンA  OS:TurboLinux7.0   apache2.0.43   perl-5.5 マシンB  OS:FreeBSD   apache1.3.26   perl-5.005 です。 あまり、環境には依存していない、むしろapacheの設定のような気もするのですが、  1.画面に文字列を表示させるだけの単純なものを作成します。  2.サーバのユーザディレクトリ    /UserDir/public_html/cgi-bin に、cgi本体をアップします。 で、ここまでは問題ないのですがクライアントからアクセスする際に、cgi-binのパーミッションを755とした場合では、アクセスが可能ですが、777とした場合はIternalServerErrorとなります。 googleとかで調べてみると、プロバイダによっては777にすると動かないので777にしてくださいというのを見つけました。 確かに、777にすることはセキュリティ上の問題はあるのは分かるのですが、 どこの設定で動作しないようにしているのか(仕様ですか?)、などが気になりましたので質問させてもらいました。 動作しないのはセキュリティの問題があるのでデフォルトでは777を禁止しているのかなとは思うのですが、設定は可能なのかが気になるところです。 長くなり読みづらいかもしれないですが、ご容赦ください。 よろしくお願いいたします。  ※マシンA・Bと書きましたが、両者で発生しています。

専門家に質問してみよう