• ベストアンサー

c-boardの文字コード

c-boardという掲示板をいじっています。 この掲示板CGIが使用している文字コードが分かりません。 sjisを使用しているように思うのですが 禁止ワードのチェックなど内部文字列の処理に関して(sjisでは問題があるはずなので) 文字コードはどうなっているか分かる方がいたら教えてください。

  • CGI
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • Blatsan
  • ベストアンサー率46% (15/32)
回答No.2

CGIは全てソフトJISで書かれています。 しかし、commander.plと言うファイル321行目を見て見てください。 「STRING::etc2sjis」と言うルーチン名が使われています。 str.pl ファイルを見ますと「文字コードをEUCに変換」と書かれています。 perlのシフトJISは、半角カナに弱い問題がありますので、EUCで処理をしているようです。 最近開発するならUTF-8を使えば、この手の問題は改善されていますが、EUCを使っているので、長い歴史のあるCGIなのですね。 コードを見ていて楽しかったです。

masa-25
質問者

お礼

ご丁寧にお調べいただき、深く深くお礼申し上げます。 EUCだったのですね。ほかのファイルでsjisにという記述があるところがあり、 てっきりsjisなのかと思いこんでおりました。 このCGIはだいぶ古いもののようで、有志の方が新しく更新しているようです。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

テキストエディタはどんなものをお使いでしょうか? ある程度以上の機能を持ったものですと、現在編集中のファイルの文字コードを確認できる機能があります(ステータスバーに表示する 等) Windows付属のメモ帳等では難しいです。 また、判定ツールもあります。 Windowsなら、例えばVectorから探すとか http://www.vector.co.jp/vpack/filearea/win/util/text/conv/code/ UNIX系なら nkf コマンドの guessオプションとか

masa-25
質問者

補足

どうもありがとうございます。 EmEditor Standardを使用しています。

関連するQ&A

  • C#でテキスト読込時、文字コード誤りを防ぐには?

    Visual C# 2005です。 現状、入力パスのテキストを文字コードSJIS("shift_jis")として読み込んで処理を行う、 というツールがあるのですが、 オペミスで、入力パスに、文字コードEUC("euc-jp")のテキストが格納されていた場合、 現状は、処理の途中で、 「入力文字列の形式が正しくありません。」や 「オブジェクト参照がオブジェクトインスタンスに設定されていません」 等の例外となってしまいます。 これ(テキストがEUCであることを検知、又は、SJISでないことを検知) を事前(実行ボタン押下直後)に確認する方法はないでしょうか? 厳密にチェックする方法がなければ、可能性の示唆でもかまいません。 また、SJIS⇔EUCが逆の場合(EUCであるべきテキストがSJISであった場合)も知りたいです。 よろしくお願いします。 因みに、テキストを用意する人とツールを実行する人(素人)は別の人なので、 画面に「事前に文字コードを確認して下さい」と表示しても無意味とのことです。

  • C#プログラムファイルの文字コード

    まず http://okwave.jp/qa/q8592830.html 上記内容で、スクリプト言語のスクリプトファイルの文字コードの質問をしたものです。 PHPやunixシェルは内部的に文字コード情報をもたたず すべての文字列をバイト列として保持しており pythonでは,文字列は内部的にオブジェクトが文字エンコーディング情報を持つ必要があるため事前にマジックコメントでスクリプトエンジンに教えてやる必要がある・・と 回答をいただきました。 それではたとえばjavaに置き換えると javaはコンパイルすると文字列をすべてunicodeのコードポイントに変換するようです。 そのためjavaのソースファイルをコンパイルするときに javac -encodingというコンパイルオプションがあるようです。ここで指定された文字コードからunicodeへと変換されていると・・・・。 ではC#はどうなのでしょうか? cscコンパイラのコンパイルオプションには文字コードを指定するようなオプションは見つかりませんでした。 しかし using System; using System.Windows.Forms; namespace test{ class AClass{ public string property = ""; public AClass(){ } } class TestClass{ public static void Main(string [] args){ AClass obj = new AClass(); obj . property = "文字列 "; Console.WriteLine(obj. property); MessageBox.Show(obj.property); } } } 上記のようなコードをUTF-8およびSJIS-winでそれぞれ保存して、コンパイル後実行しても 文字化けすることなく「文字列」という表示がされました。 ただし、EUC-JPで保存したファイルをコンパイルすると、なんと文字化けしてしましまいました。 これはなぜでしょうか? C#コンパイラはどこでどのようにコンパイル対象のプログラムファイルの文字コードを知り得ているのでしょうか? そしてなぜ、UTF-8/SJIS-winは問題なく文字列と表示されたにもかかわらず EUC-jpだと文字化けしたのでしょうか? よろしくご教授ください。 ちなみにC#のコンパイラはコマンドプロンプロトから直接CSC.exeを実行しています。

    • ベストアンサー
    • Java
  • excelの文字コードは?

    excelの文字コードはSJISが使われているのでしょうか? 検索してみるとSJISだと、掲示板あたりに書いてあった気がするのですが、SJISでサポートしていない字が、文字化けする事無く、ちゃんと表示されています。excelの文字コードは何を使っているのですか?気になるので回答よろしくお願いします。

  • 文字コード変換

    PHP4.4を使っています。 プログラム中の文字列変数値「標の鷹」から、 http://xxx.cgi?prm=%95W%82%CC%91%E9 という文字列(リンク)を生成したいのですが、 http://xxx.cgi?prm=�W�̑� のようになってしまいます。 ソースは以下の通りです。 $img_url = "http://xxx.cgi?prm=".$row[0]; mb_detect_order("ASCII, JIS, UTF-8, eucJP-win, EUC-JP, SJIS-win, SJIS"); $enc = mb_detect_encoding($row[0]); // この時点で$row[0]=「標の鷹」 if ( ($enc != "ASCII") && ($enc != "JIS") && ($enc != "UTF-8") && ($enc != "eucJP-win") && ($enc != "EUC-JP") && ($enc != "SJIS-win") && ($enc != "SJIS") ) {   echo "未知の文字コードが入力されました。<br />\n";   exit; } $url = mb_convert_encoding($url,"SJIS",$enc); echo "url = ".$img_url."; ※ちなみに、このコードが書いてあるphpファイルはutf8です。

    • ベストアンサー
    • PHP
  • 文字操作をしたjisコードをシフトjisに変えたい

    携帯メールをCGIで受け取って処理するスクリプトを書いているのですが 文字コードの処理について行き詰っています。 $str = " $B$F$9$H (B"; #jisコードで"てすと" として、この文字列をjcode.pmでシフトjisに変換したいのですが $body = Jcode::convert($str, 'sjis'); このようにしても$bodyの中身は" $B$F$9$H (B"のまま変わりません。 MIME::parserでうけとったjisコードの文字列はちゃんと変換されるのでjcode.pmに問題はないと思われますが、 文字列操作をして変数に入れるとMIME::parserで受け取った場合とおなじ内容でもデコードされないとゆう結果になります。 なにか根本的に違うのでしょうか… スペースを省いてみたり $body = Jcode::convert($str, 'sjis','jis'); としてみたりしたのですが まったくダメでした。 ちょっとしたアドバイスだけでもいいのでよろしくお願いします。 あとお金がかかってもよいので、そういった問題を解決できそうなサイトなどがあれば紹介していただければと思います。 よろしくお願いします。m(__)m

  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP
  • .NET 文字コードの変換

    VB2008で文字列を他の文字コードにする方法が知りたいです。 何かしての部分がわかりません。 VB2005でも使えるものだったらうれしいです。 Dim str_sjis as string Dim str_euc as string = "パソコン" '例えばEUC-JP '''何かして str_sjisにシフトJISで文字列が入っている。 .Netの文字コードの変換の仕方がごちゃごちゃして分かりづらいです。

  • C#文字コードについて

    お疲れ様です。 いつもお世話になっております。 ディレクトリを開いて、ファイルをstreamreaderで読み込み、 処理をしてstreamwriterで書き込み。 というファイルを作っていて、文字コードの問題にぶち当たりました。 http://dobon.net/vb/dotnet/string/detectcode.html にあるプログラムを実行すると、 ある条件の時に、UTFがsjisと誤認されることがあり、それをなんとか解決できないかと考えています。 ある条件とは、 あa テストPHP など、文字コードがUTF8で、全角と半角英字が隣り合う文字列が合った場合です。 全角と半角数字ではUTF8と正しく認識されるようです。 ただし、 aあ のように、半角英字全角の組み合わせでは誤認は起きません。 同じように、 あ a テスト php と、半角スペースが空いたり あ a と、全角スペースであけてもUTF8と認識されるようです。 普段PHPで、文字コードについて深く意識したことが無かったので、 なぜこういった誤認が起きるのかが検討つきません。 どういったことが原因だと考えられるのでしょうか? また、それを改善するのに何をすればよいでしょうか? よろしくお願いします。

  • C# 文字コード変換

    お世話になります。 宜しくお願いします。 C#でプログラムを開発しております。 その中で、文字列をShift-JISでテキストファイルへ書き出す という処理があるんですが 以下のように指定しても文字コードがUTF-8で書き出されているようです。 コードを調べましたが間違いが見つけられません。 どこか間違いはございますでしょうか。 ご教授宜しくお願いします。 ・文字コードを判別する場所 : http://encode-detector.uic.jp/tool ・テキストの形式 :ファイル名.DMD /////////////// 以下コード /////////////////////////     String param = "テキストへ書き込む内容";     System.IO.StreamWriter sw =          new System.IO.StreamWriter(             @"C:\hoge.DMD",              false,             System.Text.Encoding.GetEncoding("Shift_JIS") );     System.Text.Encoding src = System.Text.Encoding.UTF8;     System.Text.Encoding dest = System.Text.Encoding.GetEncoding("Shift_JIS");     byte[] temp = src.GetBytes(param);     byte[] sjis_temp = System.Text.Encoding.Convert(src, dest, temp);     param = dest.GetString(sjis_temp);     sw.Write(param);     sw.Close();

  • Word文書中の文字の文字コードを知りたいです

    (1) Word 2013で作った .docx 文書の中のある1文字の文字コードを知るにはどうしたらいいでしょうか。 (2) Word 2013で作った .docx 文書には、Unicode、SJISなどで言うと、どんな文字コードが使われているのでしょうか。 Windows 7 Ultimate 64 SP1、Word 2013 32ビット、ATOK 2012です。

専門家に質問してみよう