プロが教えるわが家の防犯対策術!

PERLのCGIで「撮影」文字が「暫影」と文字化けしてしまいます。
これを回避するにはどうすれば良いでしょうか?

CGIスクリプトはSHIFT_JISで作成してます。
Perlのバージョン 5.008007
OS:linux
use Encode; (Ver. 2.88)が使えます
use utf8; (Ver. 1.05)が使えます

A 回答 (5件)

ブラウザ上で文字化けということですか。


apacheの文字コードとかhtmlの文字コードとかと、cgiから出力する文字コードがあってますか?
    • good
    • 0

プログラム内で実際に主力している文字コード(またはHTMLファイル内にハードコーディングされている文字ならHTMLファイルの生成環境の既定の文字コード)とHTMLヘッダーで指定している文字コードが異なっているのでしょう。


その辺をご確認ください。

Googleなどで「Perl CGI 文字化け」といった簡単なキーワードで検索すると解決策を説明したページがたくさん見つかるかと思います。
参考まで。
    • good
    • 0

文字コード違いにしては、文字化けが大人しすぎます。


おそらく、「撮」を「(日本語の)一文字」ではなく「(1バイト文字が)2文字」と見做して、そのうちの1バイトだけを変換したように見えます。
所謂「だめ文字」と同じ根の問題です。

5.8.7だと
○use utf8;して、スクリプトもUTF-8で書く。
○外部の文字(通信で受けとったものとか、ファイルの中のものとか)は decodeして utf8フラグ付き文字列にする
○ utf8フラグ付き文字列で変換等を行う。(漢字は「1文字」扱いされる)
○外部に書き出す際には encodeする。
で大抵は解決できると思います。
    • good
    • 0

まじめな話として


5.8.7 はいくらなんでも古すぎる
と思うの.
    • good
    • 0

Shift_JISの2バイト目が42から62になっているので小文字変換処理が誤って行われたように見えます。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!