2013-05-10 2 views
0

Мне нужно импортировать данные из TXT-файла в mySQL db.php вставить текстовый файл в кодировку mysql

Когда я открываю txt с блокнотом, файл записывается в DOS/Windows ANSI (кодируется в ANSI). Когда я открываю его AkelPad я получаю информацию о том, что файл закодирован в 1253 (ANSI-гречески)

импортировать данные с ниже код

$myFile = "Bill.txt"; 
$fh = fopen($myFile, 'r'); 
$theData1 = fread($fh, filesize($myFile)); 
$theData = str_replace("'","#",$theData1); 
$theData = iconv('cp1253','UTF-8',$theData); 
$data = (filesize($myFile))/156; 
fclose($fh); 
$line = 0; 

mysql_query("TRUNCATE Bill"); 
for ($counter = 1; $counter <= $data; $counter++) { 
    $Barcode[counter] = substr($theData, ($line+0), 10); 
    $BuildingCode[counter] = substr($theData, ($line+10), 5); 
    $BuildingAddress[counter] = substr($theData, ($line+14), 40); 
    $FlatName[counter] = substr($theData, ($line+54), 50); 
    $FlatDescription[counter] = substr($theData, ($line+104), 8); 
    $EntrySeason[counter] = substr($theData, ($line+112), 23); 
    $Period[counter] = substr($theData, ($line+135), 11); 
    $Amountint = substr($theData, ($line+146), 7); 
    $Amountdec = substr($theData, ($line+153), 2); 
    $Amount[counter] = $Amountint.'.'.$Amountdec; 

    mysql_query("INSERT INTO Bill (Id, Code, Address, Name, Description, EntrySeason, Period, Revenue) 
    VALUES ('$Barcode[counter]', '$BuildingCode[counter]', '$BuildingAddress[counter]', '$FlatName[counter]', '$FlatDescription[counter]', '$EntrySeason[counter]', '$Period[counter]', '$Amount[counter]')"); 

    $line = $counter * 156; 
} 

Когда я прочитал вышеуказанные данные с кодом

$query = "SELECT * FROM Bill ORDER BY Id ASC"; 
$result = mysql_query($query) or die(mysql_error()); 
$i=0; 
while ($row=mysql_fetch_array($result)){ 
$i=$i+1; 
echo $i." - ".$row['Id']. " - ". $row['Code']. " - ". $row['Address']. " - ". $row['Name']. " - ". $row['Description']. " - ". $row['EntrySeason']. " - ". $row['Period']. " - ". $row['Revenue'].'<br>'; 

Получаю греческие буквы. Когда я проверяю дб с PHPMyAdmin все греческие элементы, как это обугливает ÃÅÙÑÃ.ÃÅÍÍÇÌÁÔÁ 39Á

Если я пытаюсь вставить entrys из MySQL в SQLite буквы эти ÃÅÙÑÃ.ÃÅÍÍÇÌÁÔÁ 39Á

Где я ошибаюсь?

ответ

0

Есть несколько вещей, которые могли бы быть неправильны

1) Вы уверены, что вы используете базу данных UTF-8, таблицу, столбец в базе данных, где вы пытаетесь сохранить данные?

2) Запустили mysql_query ("SET NAMES utf8"); перед запуском select/update в базу данных?

Если вы делаете оба права, я бы предложил вам отладить это более подробно.

3) Попробуйте указать один символ в файле txt и попытаться выполнить эхо ord ($ str {xxx}) до и после функции iconv и проверить правильность кодирования двоичных данных UTF-8.

+0

Я пробую следующее: я посылаю первую букву из моего txt и получаю 208. После iconv iconv ('CP1253', 'UTF-8', $ theData); я получаю 206 ... Что нужно делать? – kosbou

+0

Каков правильный характер. Должно ли это 206 или 208? И что вы получаете, когда пытаетесь получить это из базы данных (снова в ord)? – Ondrej