いくつか下のような方法も試してみたが同じく上手くいかない。
- ソースCSVをEUCに保存し直しアップロード時にSJISへ変換する
- ソースCSVをUTF8に保存し直してアップロード時にSJISへ変換する
よくよく調べると、これはさくらインターネットのサーバで、phpMyAdminを通してLOAD DATA LOCALコマンドを使わないといけないから発生する問題と分かった。おそらく直でコマンドを打てる環境であれば問題がないと思われる。
以前からよくあるSJIS-EUCなどのサーバサイドプログラムでの文字コードの取り扱いの問題だ。特定の文字にメタ文字(特殊文字)の「\」を表す'5c'が2バイト目に含まれている事が原因で、「\」はエスケープ記号と解釈され抜けてしまう。その「\」を補うため「\」を文字化けする以下の文字の末尾に付け足すことで修正する。十、表、ソ、申、貼、能、暴、予、圭、噂、曾など40種ほどある。
くわしくは、
http://www.psl.ne.jp/perl/pdojo00c.html http://www.kent-web.com/pubc/jcode/
このエスケープ記号のつけたCSVをダウンロードできるようにした。
郵便番号-住所全国データ(2006.4.1分)
郵便データベースで文字化けに困ったときに参考になれば。
=================
さくらメールボックスの容量メンテ
不明なメールが溜まるがどうメンテするか?受信できなくなるので
1)ウェブメールで選択し削除する
50通ずつくらいしか削除できない
2)FTPでメールディレクトリ内のファイルを削除する(事前バックアップしてもいい)
/home/your_dir/MailBoox/postmaster/maildir/cur
/home/your_dir/MailBoox/postmaster/maildir/.span/cur
cur2に変名し、curディレクトリを切り直してもいい
大量にメールがあるとFTPではタイムアウトして無理
3)コンソールでメールボックスを削除してから同名で作成しなおす
postmasterは削除できない
4)postmaster等の大量メールフォルダのcurを変名しcurを作成しなおす
変名したcur2がFTPではタイムアウトして削除できない場合、
さくらの問い合わせフォームにてディレクトリの削除依頼をする
2)FTPでメールディレクトリ内のファイルを削除する(事前バックアップしてもいい)
/home/your_dir/MailBoox/postmaster/maildir/cur
/home/your_dir/MailBoox/postmaster/maildir/.span/cur
cur2に変名し、curディレクトリを切り直してもいい
大量にメールがあるとFTPではタイムアウトして無理
3)コンソールでメールボックスを削除してから同名で作成しなおす
postmasterは削除できない
4)postmaster等の大量メールフォルダのcurを変名しcurを作成しなおす
変名したcur2がFTPではタイムアウトして削除できない場合、
さくらの問い合わせフォームにてディレクトリの削除依頼をする