2016-03-03 80 views
3

我試圖導入CSV到使用此代碼我的MySQL數據庫:無效的UTF-8字符的字符串文件轉換成MySQL數據庫

我從後CSV文件。

<?php 

//conexiones, conexiones everywhere 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 
$db_host = 'localhost'; 
$db_user = 'root'; 
$db_pass = 'password'; 

$database = 'test'; 
$table = 'csvtable'; 
if ([email protected]_connect($db_host, $db_user, $db_pass)) 
    die("No se pudo establecer conexión a la base de datos"); 

if ([email protected]_select_db($database)) 
    die("base de datos no existe"); 
    if(isset($_POST['submit'])) 
    { 
     //Aquí es donde seleccionamos nuestro csv 
     $fname = $_FILES['sel_file']['name']; 
     echo 'Cargando nombre del archivo: '.$fname.' <br>'; 
     $chk_ext = explode(".",$fname); 

     if(strtolower(end($chk_ext)) == "csv") 
     { 
      //si es correcto, entonces damos permisos de lectura para subir 
      $filename = $_FILES['sel_file']['tmp_name']; 
      $handle = fopen($filename, "r"); 

      while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) 
      { 
       //Insertamos los datos con los valores... 
       $sql = "INSERT into csvtable(id, example, example2) values('$data[0]','$data[1]','$data[2]'"; 
       mysql_query($sql) or die('Error: '.mysql_error()); 
      } 
      //cerramos la lectura del archivo "abrir archivo" con un "cerrar archivo" 
      fclose($handle); 
      echo "Importación exitosa!"; 
     } 
     else 
     { 
      //si aparece esto es posible que el archivo no tenga el formato adecuado, inclusive cuando es cvs, revisarlo para    
//ver si esta separado por " , " 
      echo "Archivo invalido!"; 
     } 
    } 

?> 

的問題是,我有一個像Sol·licitudAccés的話,我得到這個錯誤:

Error: Invalid utf8 character string: 'Sol\xB7licitant'

你能幫我傢伙?

+0

確保您的整個堆棧是UTF- 8:https://www.toptal.com/php/a-utf-8-primer-for-php-and-mysql – Halcyon

+0

csv和utf-8有問題。使用LOAD DATA導入到Mysql。嘗試將數據從SQL Server導出到Mysql時遇到此問題。客戶給我的XML有問題。不要忘記在加載數據之前添加'SET CHARACTER SET'utf8''。在使用MySQL和i18n時,我還添加了「SET NAMES utf8」。 –

+0

如果你在Excel中創建/編輯csv文件 - **不要** ... utf-8支持是垃圾(你必須創建一個新的電子表格然後導入數據),請嘗試打開/自由相反,你可能會有更好的運氣。 – CD001

回答

3

不知道這工作這種情況下,但是當我有文本文件顯示錯誤的口音我只是用UltraEditNotepad++到Enconde更改爲UTF-8

enter image description here

+1

它已經在UTF8上:(並且仍然不工作 –

+0

@GonzaloPaniagua如果字節是'53 6F 6C B7 6C 69 63 69 74 75 64',那麼'Sol·licitud'這個詞在Windows-1252中被編碼。 UTF-8的字節流爲'53 6F 6C C2 B7 6C 69 63 69 74 75 64'。你看到了區別嗎?在B7之前有'C2'。你的CSV文件很可能不是用UTF- 8或部分用UTF-8編碼;Accés在Windows-1252中爲'41 63 63 E9 73';在UTF-8中爲'41 63 63 C3 A9 73',即'C3 A9'代替'E9' 'é'。 – Mofi

相關問題