2012-08-15 41 views
2

我有大約50個問題和70,000個條目進行了大量研究,因此手動編輯或使用數據透視表不會真正起作用,我需要將數據上傳到數據庫中。在使用fgcsv()時,我無法使用任何精度讀取日文字符。我已經嘗試將區域設置設置爲UTF-8和SJIS,但似乎都不想閱讀所有的日文字符。我讀的地方,這可能是一個錯誤,但我不知道..如何讓FGETCSV讀取整個日本單元格

的數據是這樣的:

Q-004 必須回答 あなたは、以下のどちらにお住まいですか? S/A 
1  北海道 Hokkaido 
2  青森県 Aomori 
3  巖手県 Iwate 
4  宮城県 Miyagi 
5  秋田県 Akita 

這裏是我的代碼:

setlocale(LC_ALL, 'ja_JP.SJIS'); 
     $fp = fopen($_POST["filename"],'r') or die("can't open file"); 
      $csv_line = fgetcsv($fp,1024); 
      $query = ""; 
      $count = 0; 
      $question = false; 
      while($csv_line = fgetcsv($fp,1024)) { 

       if (!$question && strpos($csv_line[0],"Q-")!== false) 
       { 
        echo "Found a question: ".$csv_line[2] . "<br>"; 
        $question = true; 
       } 
       else if($question && strlen($csv_line[0])==0) 
       { 
        echo "<hr>"; 
        $question = false; 
       } 
       else if($question && intval($csv_line[0])>0) 
       { 
        echo $csv_line[0]. " has value ". $csv_line[2]." - ".$csv_line[3]. "<br>"; 
       }  

       $count++; 
      } 
     echo "$count records read successfully"; 
     fclose($fp) or die("can't close file"); 

下面是結果:

Found a question: A以下のどちらにお住まいですか? 
1 has value k海道 - Hokkaido 
2 has value X県 - Aomori 
3 has value - Iwate 
4 has value {城県 - Miyagi 
5 has value H田県 - Akita 

回答

1

當談到在PHP中讀取CSV時,我會說......不要這樣做,而是使用SQL數據庫來代替,其中您可以使用ca n在MySQL中設置排序規則,如ujis_japanese_ci

您應該能夠使用phpMyAdmin輕鬆地將您的CSV導入到MySQL數據庫中,如果這是您所擁有的,然後從MySQL數據庫呈現數據而不是讀取CSV文件。

這是一種解決方法,但我的一般經驗是CSV +外國/特殊字符==問題。

我相信這至少是值得的嘗試。祝你好運

+0

我想導入它使用phpMyAdmin,但正如我所說,我有50個問題要導入,他們在一張工作簿,並不是所有的數組是相同的「形狀」。在這個例子中,我使用了一個單一的答案,但我有一些問題是多答案的,有些是矩陣,我正在計劃在讀取CSV時實施這些問題。我想我可以扔掉所有的日本人,導入它,然後用日語 - >英語翻譯創建一個新表格。 – Asitaka 2012-08-15 02:38:47

+0

無論如何,是的,我會採用SQL方法並拋棄CSV。現在將數據製成表格以便將來進行更改並更輕鬆地處理數據庫可能很有意義。 – khaverim 2012-08-15 03:19:33

+0

我稍後再嘗試一下,並告訴你它是如何工作的。只是爲了澄清,數據已經列表,我只是想找到一個簡單的方法來存儲數據的關鍵。起初我只是想將數值作爲數組進行硬編碼,所以當我通過php從數據庫中獲取數據時,數據量非常小,我不必每次都傳輸「靜態」數據。 – Asitaka 2012-08-15 03:57:48

相關問題