|
1 2 3 4 5 6 7 8 |
// BOMがついていたらBOMを削除して保存 $filepath = 'hoge.csv'; $contents = file_get_contents($filepath); $bom = pack('H*','EFBBBF'); if(substr($contents, 0, 3) === $bom) { $contents = substr($contents, 3); file_put_contents($filepath, $contents); } |
【Excel】UTF-8のCSVをExcelで開くには
UTF-8のCSVファイルをExcelで開くと、そのままだと文字化けしてしまいますが
「BOMつき」で保存することでExcelで開くことができるようになります。
BOMというのは、簡単に言うと
「これはUnicodeですよ」という意味のコードなのですが、
これを各行の先頭に入れることをBOMつきといいます。
BOMつきにすることでExcelもUTF-8のファイルであることが認識され、
文字化けせずに開けるようになります。
BOMつきにする簡単な方法は
Windowsのメモ帳で保存することです。
Windowsのメモ帳でUTF-8のファイルを保存すると自動的にBOMつきになります。
その他、テキストエディタなどのツールでもBOMつきで保存する機能があると思います。
ただし、BOMつきにしたCSVファイルを再びシステムに読み込ませたりする場合は注意が必要です。
BOMのせいでCSVファイルが正常にロードできなくなる危険があります。
ですので、システムに読み込ませる場合は、BOMつきのファイルは別ファイルとして保存しておいたほうがよいでしょう。
【PHP】日本語でも英語でもない言語でのメール送信
日本語のメールを送信するプログラムとして
|
1 2 3 4 5 |
mb_language("japanese"); mb_internal_encoding("UTF-8"); $from_name = '=?UTF-8?B?' . base64_encode($from_name) . '?='; $header = "From: " . $from_name . "<" . $from . ">\n"; $ret = mb_send_mail($to, $subject, $body, $header); |
こんな感じのシステムがありました。(かなり省略してます)
これで日本語のメールは問題なく送信できるのですが、
このシステムをコピーしてベトナム語版を作ろうという話になりました。
WEBやメールの日本語の文言をすべて外だしにし、
言語に応じたメッセージを入れるように改修しました。
しかしベトナム語のメールが文字化けしました。
当然ですね。
この部分、
|
1 |
mb_language("japanese"); |
を
|
1 |
mb_language("uni"); |
に修正、これで文字化けは解決、多言語に対応するメール送信プログラムになりました。
