人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでメールフォームを作っているのですが、中国語を使えるようにするためにはどうすればいいでしょうか。
文字コードをUTF-8にして送信してみると、日本語部分は文字化けせずに、中国語の一部文字が?に化けてしまいます。届いたメールは「charset=ISO-2022-JP」とヘッダーに入っているので、UTF-8との差によるものかと思いますが・・・
解決方法をお教えください。急いでいるのでポイント高めで。よろしくお願いします!

●質問者: n_maco2
●カテゴリ:インターネット ウェブ制作
✍キーワード:ISO-2022-JP PHP UTF-8 ポイント メール
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● kn1967
●10ポイント

マルチバイト処置の場合は、

(1)php内部処理で使われるコードも調整しておかないと文字化けします。

http://jp.php.net/manual/ja/ref.mbstring.php

(2)mb_send_mail を使っているのであれば、mb_language も確認してください。

http://jp.php.net/mb_send_mail

◎質問者からの返答

おっしゃることはわかるのですが、注意はしているつもりなので、どう調整すればいいのかと・・・


2 ● kimizu
●22ポイント

http://www.infinity-dimensions.com/blog/archives/000114.html

http://www.spencernetwork.org/jcode/readme.txt

このあたりを参照するとわかると思うのですが、

「charset=ISO-2022-JP」とは、JISコードと呼ばれる

文字体系です。中国語の漢字の一部は、JISコードに無いので、

変換した時点で当然文字化けします。

メール送信部分をUTF-8で送信できれば良いのですが、

メール送信プログラムや途中の経路によって、7bitで切られ、

頭のビットが無くなる事による文字化けも考慮する必要があります。

なので、メールの本文中ではUTF-8でエンコードされた状態で

受信し、その後のプログラムでエンコードを解くような手順が

良さそうです。

◎質問者からの返答

ふむふむ・・・参考になります、ありがとうございます。

「メールの本文中ではUTF-8でエンコードされた状態で受信し、その後のプログラムでエンコードを解くような手順が良さそうです。」

上記の部分がよく意味がわからないのですが、メールの送信をPHPから行い受信は普通の中国語OSのメールソフトの予定ですが、この場合はどうなりますでしょうか。


3 ● hamster008
●5ポイント

文字コードの指定がUTF-8にできていないですね。http://end

◎質問者からの返答

それはわかりますが、全てUTF-8で処理を行っているので、送信時にUTF-8ではなくISO-2022-JPに変換されてしまうのですかね・・・


4 ● arcana
●53ポイント ベストアンサー

PHP 上から UTF-8 デフォルトなメール送信の方法

参考:http://www.securehtml.jp/utf-8/php_utf_mail.html

送信プログラム側に上記サイトの上段で提示されている仕組みをいれると

解決するかもしれません。

一度、試されてはどうでしょうか?

◎質問者からの返答

非常に参考になります、ありがとうございます!試してみたいと思います・・・が、試せるのが今週末になりますので、この質問は一回終了したいと思います。

みなさんありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ