
入力フォームより入力した文字を7bit-JISに変換してメールで送信するスクリプトをutf8で書いております。
eucでスクリプトを書いておりました時はjcode.plでJISコードに変換すると、(株)や髙の文字もそのままメールで送られておりました。
今回utf8でスクリプトを書きなおしますと、
(株)(一文字の機種依存文字のです) → \x{3231}
髙 → \x{9ad9}
に変換されます...
どのようにすると、このような機種依存文字もそのまま送信することができるでしょうか?
スクリプトは下記のような感じです..
--------------------
use utf8;
use Encode;
use Encode::Guess;
binmode STDIN, ':bytes';
require 'mimew.pl';
# $Mail_Head : メールヘッダ
# $Mail_Data : フォームより入力された文字列
#JISコードに変換
$Mail_Data = &to_jis($Mail_Data);
$Mail_Real = $Mail_Head.$Mail_Data;
# メール送信
open(MAIL,"|$SendMailPath");
print MAIL $Mail_Real;
close(MAIL);
exit;
sub to_jis {
my $text = $_[0];
# ~、-など文字化け対策
$text =~ tr/[\x{ff5e}\x{2225}\x{ff0d}\x{ffe0}\x{ffe1}\x{ffe2}]/[\x{301c}\x{2016}\x{2212}\x{00a2}\x{00a3}\x{00ac}]/;
return encode ('7bit-jis', $text);
}
--------
\x{3231}は
$text =~ s/\x{3231}/(株)/;
などで(株)に変換するとかいう対策ができるかと思いますが、
はしご高などはお名前に使われる文字ですし、そのまま送信したいのです。
よろしくお願いします!
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
use utf8していると、utf8フラグと向き合うことになりますので
引っかかりやすい部分はあると思います。
具体的にどのようなコードを書いてどんなエラーが出たとか補足していただけますか?
#!/usr/bin/perl
# -*- coding: utf8 -*
use strict;
use warnings;
use Fatal qw(:void open close);
use feature ':5.10';
use utf8;
use Encode qw/from_to decode encode/;
binmode STDIN, ':bytes';
my $str = "";#たぶんokwaveで変換しちゃうだろうけどはしご高。
my $outstr = encode('7bit-jis', $str, Encode::FB_PERLQQ);
say $outstr; #→ \x{9ad9}
#echo |nkf -S -j|hexdump
#00000000: 1B 24 42 7C 62 1B 28 42 0A .$B|b.(B.
$outstr =~ s/\\x\{9ad9\}/\x1b\x24\x42\x7c\x62\x1b\x28\x42/;
say $outstr;
こんな感じで、JISっぽい文字列にはしご高を埋め込めてます。
上記の出力を再度 nkf に食わせてsjisに戻すとsjisのはしご高になります。
No.2
- 回答日時:
>ところでEncodeではよっぽどがんばらないと(?)無理なんでしょうか...
配布されている状態のものではだめだと思います。
変換した後に、直接必要なパターン(あらかじめ求めておきます)に置換すれば可能でしょうけど。
リリースノート (Perl-Encode-ISO2022JPMS - 0.1) - Legacy Encoding Project - SourceForge.JP
http://sourceforge.jp/projects/legacy-encoding/r …
このモジュール(Encode::ISO2022JPMS)を入れるか、あるいは同様のことを自分でやるというのも
あるとは思いますが、それを質問者さんが許容できるかはちょっとわかりませんのでなんとも。
どうもありがとうございます。
>変換した後に、直接必要なパターン(あらかじめ求めておきます)に置換すれば可能でしょうけど。
はじめ
http://ziddy.japan.zdnet.com/qa2291426.html?ans_ …
にsakusaker7さんが書いていらっしゃる1~4の手順でやってみようとしたのですが、どうもできなくて...use utf8してるからでしょうか...?
Japaneseモジュールの使用で問題ないのですが、自分の勉強のためにやり方を知りたいと思いましたもので。
No.1
- 回答日時:
面倒くさいので詳細は省きますが、Encodeモジュールではなく
Unicode::Japanese などを使って変換すればいけそうな。
Unicode::Japanese - 日本語文字コード変換
http://tech.ymirlink.co.jp/perl/cpan/Unicode/Jap …
下記でできました!ありがとうございます!
use Unicode::Japanese;
sub to_jis {
my $text = $_[0];
$text = encode ('utf8', $text);
return Unicode::Japanese->new($text)->jis;
}
ところでEncodeではよっぽどがんばらないと(?)無理なんでしょうか...
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- C言語・C++・C# S-JIS → JIS コード変換するには 3 2023/02/09 23:55
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Selenium Basicの件 5 2023/04/10 20:55
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perl でエラー:Wide character...
-
CSVファイルの中で、「 , 」カ...
-
IEからEdgeへの移行に伴うIMEの...
-
エクセルで数値を全角文字(カ...
-
Excel VBAでPDFファイルをMicro...
-
CSVの定義
-
Excelについて質問です。 セル...
-
COBOL・全角判定
-
VBA 文字に半角が含まれて...
-
住宅にカナを入力する際に丁目...
-
英数字のみ全角から半角に変換
-
VBA 置換文字がみつからない時
-
正規表現で、特定の文字列を含...
-
openoffice calcで#DIV/0! の...
-
CString から LPCTSTRの型に変換
-
C#で、テキストボックスの入力...
-
フォントの色を保持したままセ...
-
WORDで改ページすると時々グレ...
-
ACCESS VBA でのバイナリデー...
-
Excel VBA 教えてください。 VB...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl でエラー:Wide character...
-
MFCのコントロールにUTF-8の文...
-
【文字コード】外見上は全く同...
-
printfの書式指定での2バイト文...
-
【LaTeX】pBibTeXでのエラーの...
-
デバッグ情報が文字化けする
-
perlについての質問
-
漢字コードについて
-
カタカナ一覧表が知りたい
-
Jcode.pmでconvertできない
-
Jcodeによるカタカナ→ひらがな変換
-
オブジェクト? perlをオーバー...
-
jcode.plのかわり
-
HTML::Templateでutf-8のテンプ...
-
Perlにおけるパターンマッチ
-
UTF-16からUTF-8への変換
-
UTF8コードでのメール送信
-
EC-CUBEでの文字化け
-
sedやperlでの2バイト文字を含...
-
Python データの可視化
おすすめ情報