質問するログイン新規登録
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1495閲覧

CSVファイルからのアップロード。文字化けを解消したい。

chapp

総合スコア233

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/02/10 04:22

0

0

お世話になります。

エクセルにて作られたCSVファイルをMySQL内にアップロードする場面があるのですが、à è éなどのフランス語のアクサンが文字化けしてしてしまいます。(化けた形でインサートされる)

以下は、現在のスクリプトの一部(質問文として余計な部分は省略)です。色々と試すものの上手くいかずで・・・
何処を不適切なのかアドバイス頂けると幸いです。

if(is_uploaded_file($_FILES["upfile"]["tmp_name"]) AND $auction_no > 0) { if(move_uploaded_file($_FILES["upfile"]["tmp_name"], "csv/" . $_FILES["upfile"]["name"])){ chmod("csv/" . $_FILES["upfile"]["name"], 0777); $upload = "./csv/".$_FILES["upfile"]["name"]; if($upload){ $sjis = file_get_contents($upload); $utf8 = mb_convert_encoding($sjis, 'UTF-8', 'SJIS-win'); file_put_contents($upload, $utf8); function formatting_to_sql($v) { //空白文字を除去 $v = trim($v); if($v != ""){ if( preg_match('/[^\d]/',$v) ){ //数字以外の文字を含む場合はテキストとして判別して文字コードを変えて返す return mb_convert_encoding($v, "UTF-8", "SJIS"); } if( preg_match('/^0+$/',$v) ){ //テキストが全部0だったら0にして返す return 0; } elseif($v > 2147483646){ return $v; } else { //テキストが数字で0以外の数字があったら先頭の0を省いて返す return ltrim(preg_replace('/^0*([1-9][0-9]*)$/','$1',$v,1)); } } } $fp = fopen($upload, "r"); //一行ずつCSVからデータを取り出しつつループ $i = 0; while($line = fgetcsv($fp)){

ご教示ください。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

windowsアップデートでエクセルの更新をしていればCSVで保存するときに
utf8形式で保存するオプションが選択できるようです

投稿2022/02/10 05:34

yambejp

総合スコア117967

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapp

2022/02/10 06:03

yambejpさん ご親切な書き込みをありがとうございます。 UFT形式のCSVで保存し、スクリプト中のエンコーディングを見直すことで、正常にアップすることが出来ました。 ありがとうございました。
guest

0

ShiftJISにはフランス語の文字はありません
なので解決不能です

投稿2022/02/10 04:56

y_waiwai

総合スコア88180

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapp

2022/02/10 06:01

y_waiwaiさん ご親切な書き込みありがとうございます。 投稿後色々調べていましたが、仰るとおりフランス語は識別していないようで保存した時点で文字化けしていました。 アップロード以前の話ですね。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問