PHP-文字コード変換

ホームページ内容コードUTF-8にしたいので(SHIFT-JISのままがいいか判断はつかないけど)csvを見込んでいる個所を見なおす。
csvの元データがexcelなので

excelからcsv保存→デフォルトでSHIFT-JIS
excelからcsv書き出し時にUTF-8にする → 普通ではできない
→VBA →1文字ずつキャラクタコード変換して…的処理で元の表が大きい時遅くなりそう…却下

ACCESSの分は、ADOの「Streamオブジェクト」なるものでUTF-8のテキストをエクスポートできるらしい。
→テーブルのデータをカンマ区切りの形式で組み立てたあと、Streamオブジェクトの各プロパティやメソッドを利用して、@@@@@.csvというファイル名のUTF-8形式の テキストファイル として保存
→ここはちょっとVBAいれればできそう。

しかし、とりあえずEXCELからCSVが多いのでPHP側の処理でできる事を探す。

文字のコンバート
convert_encoding( 文字列, 変換後のエンコーディング [,変換前のエンコーディング] )文字列を変換後のエンコーディングに変換して返す。
変換後のエンコーディングに指定可能な文字コードは1つ。
変換前のエンコーディングには次の表2の内容を指定可能。
変換前のエンコーディングを省略した場合、php.iniの「mbstring.internal_encoding」の設定内容が使用される。
mb_convert_variables( 変換後のエンコーディング, 変換前のエンコーディング, 文字列 )文字列を変換後のエンコーディングに変換して、引数の文字列自体を書き換える。
戻り値には変換前のエンコーディングを返す。
変換後のエンコーディングに指定可能な文字コードは1つ。
変換前のエンコーディングには表2の内容を指定できる。
表2
指定値説明
エンコーディング文字列"ASCII"、"JIS"、"UTF-8"、"EUC-JP"、"SJIS"などの文字列
リスト"UTF-8,EUC-JP,SJIS"のようにカンマ(,)でエンコーディング文字列をつないだリスト
配列array("UTF-8","EUC-JP","SJIS")のようにエンコーディング文字列の配列
auto"ASCII,JIS,UTF-8,EUC-JP,SJIS"のエンコーディングリストと同じ

$file_name = data.csv;
// ファイルを開く
$fp = fopen( $file_name, ‘r’ );
// ファイル(CSV)を1行ずつDataがなくなるまで読み込む

while( $ret_csv = fgetcsv( $fp ) ) {

// 「”,”」を「t」に置換して
  
  $ret_csv = str_replace(“”,”",”t”,$ret_csv);

   // さらに文字コードをSJISをUTF-8に変換
   
   mb_convert_variables(“UTF-8″, “SJIS”, $ret_csv);

   // 読み込んだ行(CSV)を表示する

$i = 0;
if($ret_csv[$i] == $dirname.”/”.$thisname){
echo $ret_csv[$i];
echo $ret_csv[++$i];
echo $ret_csv[++$i];
}
}
// 開いたファイルポインタを閉じる
fclose( $fp );


ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

2015年06月19日 16:56

この記事へのトラックバック