perl初心者です。
下記のようなファイルがあったとします。
パナソニック(ナショナル)
三菱電機
日立
東芝
SONY
下記のように、書きました
while (<IN>) {
use Jcode;
Jcode::convert($_, 'euc');
chomp;
$line+=1;
Jcode::convert($_, 'euc');
if ($_=~ /\x8E/) {
print "行=$line $_\n";
}
}
できあがったファイルは、下記のように、半角カナではなく、字化け状態になってしまいました。
行=2 姉鰭電機
行=4 東芝
よろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
EUC にコンバートできてないです。
データはファイルから読み込んでいますか。
スクリプトの中でSJISで配列を作って、それを読み取ってその文字列をEUCにコンバートするのはうまくいかないようです。
※ use Jcode; はループの外にした方が良いのでは(実害は無いけど)
※ 何で Jcode::convert($_, 'euc'); を2回やってるのかな?
【HINT】
次のSJISコードの文字列を%エンコードすると右のようになります。
三菱電機 → %8E%4F%95%48%93%64%8B%40
姉鰭電機 → %8E%6F%95%68%93%64%8B%40
東芝 → %93%8C%8E%C5
「三菱電機」が「姉鰭電機」になる原因は次のエンコード間違い。
%4F → アルファベット O
%6F → アルファベット o
%48 → アルファベット H
%68 → アルファベット h
No.3
- 回答日時:
メモ帳やワードパッドなどの文字コードは「shift_jis」になっているので、Jcode::convert($_, 'euc'); でeucで出力すると文字化けするのではないでしょうか。
Jcode::convert($_, 'shift_jis'); ではどうでしょうか。
No.2
- 回答日時:
>if文なしで、printすると、
とありますが、これは質問にあるスクリプト同様 Jcode::convertは
実行しているのでしょうか?
もしそうだったとして、ただ単に入力をそのまま出力しても同様の
文字化けが発生しますか?
あとは、Jcode::convert で入力文字コードの指定をしてみるとか。
この回答への補足
ご回答、有難うございます。
申し訳ございません、文字化けは、有りませんでした。
ただ、半角カナを抽出する為に、if ($_=~ /\x8E/) の条件で、printしたのですが、出力されたのが、下記の2行になってしまいました。
行=2 三菱電機
行=4 東芝
while (<IN>) {
use Jcode;
chop;
$line+=1;
Jcode::convert(\$_, 'euc', 'sjis');
Jcode::convert(\$_, 'sjis', 'euc');
if ($_=~ /\x8E/) {
print "行=$line $_\n";
}
}
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- 照明・ライト 電気メーカー(電器メーカー?)の特徴、おすすめ度を教えてほしいです。 1 2023/02/10 13:48
- 照明・ライト 電気メーカー(電器メーカー?)の特徴、おすすめ度を教えてほしいです。 2 2023/02/10 15:44
- 照明・ライト 電気メーカー(電器メーカー?)の特徴、おすすめ度を教えてほしいです。 1 2023/02/10 22:06
- Excel(エクセル) Excel でマクロ利用しセル内テキストを修正しております(半角カナを全角にするなど)。 ただ、セル 4 2023/06/15 21:29
- テレビ タイムシフト録画をパナソニックのレコーダーに保存 3 2023/05/16 12:18
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/10 09:06
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
エディターでは改行なのにメモ...
-
オーバーラップ計算法について
-
[awk]uniq -cで複数ファイルの...
-
DOSコマンドで、標準出力を出力...
-
sprintfについて
-
ファイル出力の改行コードをLFに
-
ドメインからIPアドレスあるい...
-
window.open でのファイル指定方法
-
ListBoxのデータを高速でファイ...
-
C言語で特定の行を抽出する方法...
-
ReadLineでの読み出し行を指定する
-
VBAでCSVファイルを途中行まで...
-
パスから最後のディレクトリだ...
-
ヒアドキュメントの書き方
-
Edge スクレイピング
-
ExcelをCSV書き出す場合のシー...
-
close()で例外が投げられる理由
-
CSVデータの編集の際の重複チェ...
-
Perlで特定行から特定行までを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
重複するデータを抽出できる秀...
-
Perlでファイルの末尾から指定...
-
sprintfについて
-
[Perl]ファイル出力のエンコー...
-
エクセルVBAで素数だけを出力す...
-
文字コードの変換(Shift-JISか...
-
テキストファイルから日本語部...
-
sprintfで10進数を桁数指定で16...
-
ファイル出力の改行コードをLFに
-
Perlからsyslog経由でログを出...
-
PerlからのCSV出力
-
perlでcsvの出力について
-
教えて!perlから.exeファイル...
-
バッチファイルで、記号を含む...
-
perl CGIでのhttpヘッダー出力...
-
print文で&(半角)文字のエラー...
-
Perlでエラーログに日時をつける
-
紙にもホームページにも同じレ...
おすすめ情報