• 締切済み

配列格納時の文字化け

UTF-8文字で作ってますが 変数を配列に入れると文字化けします。 $handle = fopen($store_file,"r"); while(($rec = fgets($handle))) { $csvdata[$i] = $csvdata; <input type="hidden" name="<?php echo $csvdata[$i] ?>" value="<?php echo $csvclient ?>"> } これでデータをPOSTしたいのですが文字化けします。 echoで配列内表示しても化けてます。 配列に入れたタイミングで化けているかもしれません。 何かいけないでしょうか?

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>配列に入れたタイミングで化けているかもしれません。 そんなことはないでしょう。 まず、元ファイルが本当にUTF-8なのか確認が必要、 PHPのファイルについても同様。 また、ヘッダにキャラクターコードを設定することと METAなども設定しておけばよいのでは?

関連するQ&A

  • 日本語が文字化けしないよう読み込み

    特定ファイルにある複数行の日本語文章を 「fgets」や「file_get_contents」などで画面に読み込む時は、 単純に「mb_convert_encoding」を使えば 良いと思ったのですが 下記のようには文法的にも使えませんでした。 -------------------------------------- <?php $fp = fopen("sample.txt", "r"); $fp = mb_convert_encoding($fp, "UTF-8"); ←※間違い if($fp){ flock($fp, LOCK_SH); while(!feof($fp)){ $data = fgets($fp); echo "$data<br>"; } flock($fp, LOCK_UN); } fclose($fp); ?> -------------------------------------- すでに書き込んである 日本語が複数行書かれたファイルから 文字化けしないようにデータを読み込んで表示するには どのような処理をしたら良いのでしょうか? 複雑な処理はまだ理解できないので 簡単な処理方法があれば お教えください。 よろしくお願いいたいます。

    • ベストアンサー
    • PHP
  • 配列の格納

    現在、PHPで生成したhiddenフィールドに、Valueを設定しない記述(配列のような形式)を行い、JavaScriptにて値を代入するプログラムを作っています。 エラーは出ていないようなのですが、値が代入されません。Alertでみると、undefinedというメッセージが出ています。hiddenフィールドへの格納方法をご教授ください。 <ソース>(抄) function user_num() { var i=1,l=0, num = document.getElementById('users').length; document.user_select.user_no =new Array(num); while(num > 0){ document.getElementsByName('user_no[i]').value = document.getElementById('users').options[l].value; alert(document.getElementsByName('user_no[i]').value); num--; i++; l++; } } (中略) hiddenフィールド生成文 <?php $n=1; while($i){ print '<input type="hidden" name="user_no['; print $n; print ']"'; print ' id="user_no['; print $n; print ']">'; $i=$i-1; $n=$n+1; } ?>

  • PHP+csv+リストボックスで文字化け

    お世話になっています。 現在PHPからcsvファイルを読み込み、リストボックスに表示するという、 単純なプログラムを組んでいます。 しかし、文字化けが発生してしまいます。 csvファイル、phpファイル共に、utf8での保存を確認しています。 csvファイルはイレギュラーですが、#区切りで記入されています。 csvファイル 1#商社マン 2#プロ野球選手 phpファイル --省略-- <HEAD> <META http-equiv=content-type content="text/html; charset=UTF-8"> </HEAD> --省略-- <?php function GyousyuList(){ $listFile = fopen('./conf/gyousyu.csv','r'); ?> <SELECT><?php while($itemLine = fgets($listFile)){ $itemList = explode('#',$itemLine); $itemId = mb_convert_encoding($itemLine[0],'UTF-8'); $itemName = mb_convert_encoding($itemLine[1],'UTF-8'); ?> <OPTION value=<?php echo $itemId;?>><?php echo $itemName;?></OPTION> <?php }?> </SELECT> <?php return; } ?> <?php GyousyuList();?> --省略-- 実行結果は日本語・英語にかかわらず文字化けします。 実行結果 抜粋 <SELECT> <OPTION value="ï">»</OPTION> <OPTION value="2">#</OPTION> </SELECT> どうにも解決できません。 ちなみにmb_convertは外しても結果は変わりませんでした よろしくお願いします!

    • ベストアンサー
    • PHP
  • csvファイル出力時に文字化けしてしまう。

    csvファイル出力時に文字化けしてしまう。 csvファイルを作成して、保存してExcelで開くと文字化けしてしまいます。 保存するときに「右クリック→ファイルの保存」ではなく、「左クリック」するとデータがブラウザ上(FireFoxで確認)で観れるのですが、その時は文字化けしていません。 また、保存したファイルをTeraPadで開くと文字化けしませんでした。 ファイルの保存方法は、 $csvFile = 'entry.csv'; $csvData = "適当なデータ・・・・・・・・・・・・・・"; $fp = fopen($csvFile, 'ab'); flock($fp, LOCK_EX); ftruncate($fp,0); fwrite($fp,$csvData); fclose($fp); htmlのヘッダーには、 <meta http-equiv="Content-type" content="text/html; charset=utf-8"> を入れております。 以上よろしくお願いします。

    • ベストアンサー
    • PHP
  • 特定の文字が文字化けします

    こんにちは。 とても困ってます。 例えば、phpで echo "<P><FORM ACTION=\"main.php\">"; echo "<METHOD=POST>"; echo "<INPUT TYPE=HIDDEN NAME=res VALUE=\str_request\">"; echo "<INPUT TYPE=HIDDEN NAME=action VALUE=post>"; echo "<TEXTAREA NAME=\"str\" ROWS=\"8\" COLS=\"50\"></TEXTAREA>"; echo "<INPUT TYPE=\"submit\" VALUE=\"send">"; echo "</METHOD></FORM></P>"; と記述して「send」ボタンを押下して文字列をPOSTした場合、 受け取った文字($str)の特定の文字が文字化けします。 特定の文字とは、「る」「れ」「ろ」などです。 どなたか原因がわかる方いらっしゃらないでしょうか?

    • 締切済み
    • PHP
  • CSVファイル読み込み 文字化け

    アドバイスの方頂ければと思い質問しました。 os fedoracore5/php 5.2.5/mysql 5.0.27 SJISのCSVファイルを読み,UTF-8のプログラムで処理したいのですが、 文字列中に[,]を使用しているものには[""]で囲って いて、その他文字列の日本語部分は[""]で囲まれていません。 そこで下記のような形にしたのですが、日本語が化けてしまいます。 またCSVファイルの文字化けする項目を[""]で囲むと 正常に表示されます。文字列を[""]で囲まずとも文字化けしない方法、またプログラムに問題があればアドバイスを 頂ければと思います。 <?php define("TEST_FILE", "./tes.csv"); header("Content-Type: text/plain; charset=SJIS"); $fp = fopen(TEST_FILE, "r") ; while ($row = fgetcsv($fp)) { for ($j = 0; $j < count($row); $j++) { $data = mb_convert_encoding($row[$j], "UTF-8", "SJIS"); printf($data); } } fclose($fp); ?>

    • ベストアンサー
    • PHP
  • PHPでの文字コードについて

    フォルダー内にあるカラオケ曲のリスト(番号 歌手名 曲名)一つずつ読み込み、曲の中にある特定の言葉を含む アイテムだけをを別のファルダ―にコピーするプログラムを作ろうと思っていますが、日本語の部分が文字化けしてしまいました。 ソースコードは添付の通りです。 ここではカラオケ曲の文字コードがわからないのでとにかくUTF-8に変換し、 曲名に「恋」という漢字が含まれるものを探そうとしています。 スクリーンショットの左は曲のリストの一部、右は結果出力です。 PHPにmb_convert_encoding() というのがあるのがわかったので調べて使ってみたのですが、上手く行きません。。 この関数をちゃんと理解できれば文字化けを治せるような気がするのですが、果たしてそうでしょうか。 それとも何か別の方法があるのでしょうか。 どなたか詳しい方がいらっしゃいましたなら、アドバイスを頂きたいと思います。 どうかよろしくお願いいたします。 ソースコード <?php $origin = "aaa-karaoke/Japanese"; $Rorigin = realpath($origin); $dest = "aaa-karaoke/with-song"; $Rdest = realpath($dest); $handle = opendir($Rorigin); while( $file = readdir($handle) ){ $file = mb_convert_encoding($file, "UTF-8"); echo $file."<br>"; if( strpos($Rorigin."/".$file, "恋") ){ copy( $Rorigin."/".$file, $Rdest."/".$file); echo "copied $file</br>"; } } closedir($handle); echo "end of job"."<br>"; ?>

    • ベストアンサー
    • PHP
  • phpでcsvの文字化けを直す方法が知りたい!

    <?php /* 配列の作成 */ $array = array($name, $telephone, $email); /* ファイルポインタをオープン */ $file = fopen("information.csv", "a"); /* CSVファイルを配列へ */ if( $file ){ var_dump( fputcsv($file, $array) ); } /* ファイルポインタをクローズ */ fclose($file); ?> 上記のように記載した時、windowsのchromeでみると文字化けしてしまいます。 どのような記述をすれば、文字化けしないか教えてください。

    • ベストアンサー
    • PHP
  • fgetsで2行目から文字化け

    fgetsでファイルを一行ずつ読み込みたいのですが、二行目以降が文字化けしてしまいます。 ******* ソース ******* #include <windows.h> #include <stdio.h> FILE *fp; if ((fp = fopen("textlist.txt", "r")) == NULL){ MessageBox(NULL, TEXT("ファイルを開けません"), NULL, NULL); exit (1); } while (1) { TCHAR buf[128] = {0}; if (fgets(buf, sizeof(buf), fp) == NULL) break; MessageBox(NULL,buf,NULL,NULL); } fclose(fp); ***** textlist.txt ***** あいうえお かきくけこ さしすせそ メッセージボックスの一回目は正しく"あいうえお"と表示されますが、二回目・三回目は文字化けしています。 最終的に一行ずつ分けて配列に入れたいので、fgetsで出来たらと思っています。 よろしくお願いします。

  • 文字化けについて

    <?php //文字化け $a = "あいうえお"; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF8"> <title><?php echo $a;?></title> </head> </html> ========================================================== 宣言以前のマルチバイトに対する対策はどのようにしたら良いでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう