質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Q&A

解決済

2回答

1142閲覧

日本語を扱うと文字化けしてしまいます。

trm

総合スコア117

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

0グッド

2クリップ

投稿2017/12/18 23:02

Perlで以下のコードで日本語を扱うと文字化けしています。解決策をよろしくお願いします。

1#!C:/WWW/perl64/bin/perl 2 3use strict; 4#use DBI; 5#use DBD::SQLite 6 7 8 9#print "Content-type: text/html; charset=shift_jis\n\n"; 10print "Content-type: text/html\n\n"; 11print <<"HTML"; 12<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 13<html> 14<head> 15<title>書籍の情報書き込み</title> 16</head> 17 <body bgcolor="#000066" text="#000000" link="#0000ee" alink="#0000ee" 18 vlink="#551a8b"> 19<form action="CGI194b1.html"> 20<textarea name="mojijouhou" rows="4" cols="40">商品情報をご記入ください。</textarea> 21<br> 22<input type="submit" value="送信"><input type="reset" value="リセット"> 23</form> 24<br> 25<br> 26</body> 27</html> 28HTML 29exit; 30 31

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

perlで日本語を扱う際は、処理を「内部コード」化された文字列について行わなければうまくいきません。

  • 文字列は何かをする前に必ず「内部コード化」
  • 「内部コード化」された文字列を、出力する直前にshiftJISなりUTF8なりに変換

これが鉄則。

今はその処理ができていないのが文字化けの原因です。
以下の宣言をスクリプトの最初に書き加えてみてください。

perl

1# スクリプト中に日本語を直接書き込みたいときは以下のように宣言して文字列を内部コードで扱うよう指定する 2use utf8; 3 4# 出力をUTF8に 5binmode STDOUT, ':utf8'; 6 7# 出力をshiftJISにしたい場合は以下のようにする 8# binmode STDOUT, ':encoding(cp932)'; 9

投稿2017/12/19 03:04

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

trm

2018/02/06 05:06

use utf8; binmode STDOUT, ':utf8'; とやっても画面が文字化けし、ファイルも文字化けしてしまいます。よろしくお願いします。
guest

0

自己解決

マルチポストということでこの質問を閉めます。

投稿2018/02/21 05:46

trm

総合スコア117

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問