• ベストアンサー

文字コードでハマル

noname#225520の回答

  • ベストアンサー
noname#225520
noname#225520
回答No.1

jcode.plの書式は &jcode::convert(\$a,"euc"); です。それから、「仕様」が化ける場合には 「仕\様」等、エスケープすれば化けなくなります。

参考URL:
http://www.mikeneko.ne.jp/~lab/kcode/jcode.html

関連するQ&A

  • eucデータをsjisに変換できない。

    require './jcode.pl'; &jcode::convert(*name,'euc'); レンタルサーバーのMySQLがeucでしかデータを受け取らない ので以上のような形にしてSQL文を投げました。 結果、htmlでsjisにして吐き出す際に取り出すデータもeucで表示されるため変換できないかと悩んでいます。 while( @row = $sth->fetchrow_array() ) { 1jcode::convert(\$row,'sjis'.'euc'); 2jcode::convert(\$row,'sjis'); 3jcode::convert($row,'sjis'.'euc'); と複数試しましたがダメでした。 Perlのバージョンにより違いがあるので、 全ての先頭に&付けて再度試しましたがうまくエンコードできません。 どなたか解決方法をご存知の方、ご教授ください。

  • ver.5.8.8の文字化け

    サーバの移転でアクセスログを変更しているのですが、CGIで苦戦しています。 テキストデータが全て文字化けをしてしまいます・・・。 エキストデータ、ソースは全てSJISです。 perlのバージョンが5.8.8になりましたので、それまで使用していたjcode.plが使えないようです。 require './jcode.pl'; jcode::convert($refer, 'sjis') if ($charset); でエラーになります。 jcode.pm用に use Jcode; Jcode::convert($refer, 'sjis') if ($charset); としてもエラーになります。 これはjcode.pmが入ってないからだと思うのですが、 何か方法はないでしょうか? PHPはわかるのですが、Perlは全然わかりません。 どうか、ご教授をお願いします。

    • ベストアンサー
    • Perl
  • jcode.plについて

    次のエラーが発生します。 Undefined subroutine &jcode::convf called at ./jcode.pl line 291. カレントに、jcode.plを置いているだけでは動作するのでしょうか? また、Jcode.pmを使った場合、 &Jcode::convert(\$test_sjis, "sjis"); と大文字にしないといけないのですが、これは仕方ないことでしょうか? てっきり、 require './jcode.pl'と use Jcode.pmの差し替えで済むと思っていました。 #!/usr/bin/perl require './jcode.pl'; my $test = "パソコン結構です。"; #文字化けチェック用 my $test_sjis = $test; my $test_ujis = $test; my $test_jis = $test; &jcode::convert(\$test_sjis, "sjis"); &jcode::convert(\$test_ujis, "ujis"); &jcode::convert(\$test_jis, "jis"); print "\$test_sjis=[$test_sjis]\n"; print "\$test_ujis=[$test_ujis]\n"; print "\$test_jis =[$test_jis]\n"; exit; __END__

    • ベストアンサー
    • Perl
  • 機種依存文字(株)のコード変換について

    perlのバージョンがあがった関係で、jcode.plをJcode.pmに対応する為に記述方法の変更に奮闘中です 機種依存文字(株)に関してうまくいかないようで、下記のように文字化けしてしまいました 例1) $a="あ(株)";->あ+機種依存文字(株) Jcode::convert(\$a,'euc'); print"$a"; ->あ? 例2) $a="あ(株)";->あ+機種依存文字(株) $a= jcode($a)->h2z->euc; print"$a"; ->あ? 例3) $a="あ(株)";->あ+機種依存文字(株) $a = Jcode->new($a,"euc")->tr("あ","わ")->h2z->euc; print"$a"; ->わ? 各記述の後、$a内の機種依存文字(株)は?になってしまいます 機種依存文字(株)としてそのまま認識したいのですが、どのような記述にすればいいのかわかりません (機種依存文字(株)以外の文字化けはまだ調べていません) ※perl5.8.7では認識されず、以前のperlのバージョン5.005_03ではそのまま認識されています ご教授宜しく御願いします

    • ベストアンサー
    • Perl
  • 特定文字での文字化け

    DB(oracle)から抽出したものをPerl5でcsv出力しているのですが、特定文字で文字化けが起こってしまいます。 特定文字というのが、シフトJISの「拡張文字」と言われているものにあたるらしく、 0xED40~0xED9Eとか0xFA40~0xFA9Eとかです。 0xED40→ス、0xED9E→シ、0xFA40→。、0xFA9E→.となってしまいます。(文字を出したかったのですが、表示されなかったので文字コードにしました。) $strをDBより抽出した文字列として jcode::convert( \$str, "euc" ); : :(文字列の区切り処理) : jcode::convert( \$str, "sjis" ); ということをやっています。 以前、 &jcode'convert( $str, "euc" ); : :(文字列の区切り処理) : &jcode'convert( $str, "sjis" ); とやっていたのですが、この場合、 「半角カナ+文字コードが7cを含む文字」 が文字化けを起こしていました。 これを修正するために前者のような修正をしたのですが、 間違っているのでしょうか? すみませんが、よろしくお願いします。

  • perl jcode::convert 半角>全角

    perlでjcode::convertで 半角を全角に変換すると 正しく変換される時とされない時があります。 例えば、 sample1.plとsample2.plの my $message = 'の次の「ハンカク」の4文字は半角の文字です。 (注)ここにアップロードすると全角で表示されてしまいます。   この4文字を半角にして確認してください。 sample1.plではこの4文字が全角に変換されるのですが sample2.plではこの4文字は半角のままです。 なぜ全角に変換されないのでしょうか。 (Windows7, ActivePerl v5.16.3) ---sample1.pl------------ require "jcode.pl"; my $message = 'ハンカク文字は使えるかな?'; jcode::convert(\$message,"sjis","", "z"); print "$message\n"; --------------- ---sample2.pl------------ require "jcode.pl"; my $message = 'ハンカク文字'; jcode::convert(\$message,"sjis","", "z"); print "$message\n"; --------------- なお、どちらも以下のようなメッセージが表示されています。 これは何を意味しているのでしょうか。 defined(%hash) is deprecated at C:/Perl64/site/lib/jcode.pl line 684. (Maybe you should just omit the defined()?) defined(%hash) is deprecated at C:/Perl64/site/lib/jcode.pl line 693. (Maybe you should just omit the defined()?)

    • ベストアンサー
    • Perl
  • jcode.pl

    日記などのスクリプトを作成しているのですが、とりあえず今まで、そこまでの理由もわからず他のスクリプトに習ってjcode.plをデコード処理部で &jcode'convert(*value,'sjis'); &jcode'convert(*name,'sjis'); のように使ってきました。 ですが、たまたま今回、jcode.pl等を書き忘れてしまったのですが、ブラウザから投稿してみても文字化けという文字化けが起こりません。スクリプト自身はsjisで書いています。ログファイルもどうやらsjisコードで書き込まれているようなのですが、それでもjcode.plは必要なのでしょうか。windows XP にApache + Active Perl での動作と、@niftyで設置して動作を確認しました。 この場合、jcode.plは必要あるのでしょうか?

    • ベストアンサー
    • Perl
  • jcode'convertについて

    以下のようなプログラムを書きました。 -------------------------------------------------------------- require 'jcode.pl'; @a=("ら","ー","め","ん"); @b=("半","ら","い","す"); foreach $a(@a){ &jcode'convert(*a, "sjis"); foreach $b(@b){ &jcode'convert(*b, "sjis"); print $a; print $b; $aaa = <STDIN>; } } ------------------------------------------------------------------ &jcode'convert(*a, "sjis");が無いときは'ら半','らら','らい',,'らす','ー半'… といくのですが、&jcode'convert(*a, "sjis");をつけると'らす'でプログラムが終わってしまい、'ー半'…以降がプリント出来ません。 どうすればよいのでしょうか。またどうしてこうなるのでしょうか。

  • 文字コードの違うデータを判別したい

    データの文字コードが異なるファイルを確認します。 以下のスクリプトで$get_csvのデータの文字コードを判別にShift-JISで別のファイルに格納したいのです。 (スクリプト) $get_csv = get("$_[0]"); if ($get_csv =~ /utf-8/i) { &jcode'convert($get_csv,'sjis','utf-8'); } if ($get_csv =~ /EUC-JP/i) { &jcode'convert($get_csv,'sjis','euc'); } (ここまで) &jcode'convertの使い方が悪いのか?データをうまく変えられていない感じがします。 上記の内容で説明が足りてますでしょうか? よろしくお願いいたします。

  • Jcode.pmの命令について

    今まではJcode.plを使用していたのですが、UNICODEの問題でJcode.pmに変更しました。 今までは &jcode'convert(*Message,'jis'); だった個所を Jcode::convert(\$Message, "sjis"); に変更して使用しています。 Jcodeでコンバートできる文字のエンコードは何があるのでしょうか? "sjis"の部分に入る予約語は他に何がありますか? それと、マニュアルや命令が載っているサイトがあれば宜しくお願いします。

    • ベストアンサー
    • Perl