mysql LOAD DATA INFILE еуро белгісімен сәтсіздікке ұшырады

.Csv файлынан PHP және MySQL LOAD DATA INFILE файлдарын қолданамын. Кейбір ұяшықтарда '€' белгісі және сан және кейбір '$' белгісі бар және сан сияқты: 2.13 €, 5.4 $
Csv файлын кестеге жүктегенде '$' белгісі бар ұяшықтар дұрыс енгізіледі және '€' ұяшықтары бос қалды.
Байланысты баған келесі түрде анықталады:

VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci

'€' белгісі дұрыс енгізілетініне қалай көз жеткізуге болады?

0
Егер сіз өзіңіздің ANSI-ң сіздің ісіңізде тұрғанын білсеңіз (бұл нақты кодтама емес) сіз MySQL-ді түрлендіруді set names XXXX пайдалана аласыз. Бірақ IMHO-нің көшірмесін UTF-8 ретінде сақтау оңайырақ.
қосылды автор Álvaro González, көзі
Егер сіз өзіңіздің ANSI-ң сіздің ісіңізде тұрғанын білсеңіз (бұл нақты кодтама емес) сіз MySQL-ді түрлендіруді set names XXXX пайдалана аласыз. Бірақ IMHO-нің көшірмесін UTF-8 ретінде сақтау оңайырақ.
қосылды автор Álvaro González, көзі
Файлдың шифры дегеніміз не?
қосылды автор bouscher, көзі
Файлдың шифры дегеніміз не?
қосылды автор bouscher, көзі
Дәл қазір файлдың кодтамасы ANSI болып табылады.
қосылды автор Sharon Haim Pour, көзі
Дәл қазір файлдың кодтамасы ANSI болып табылады.
қосылды автор Sharon Haim Pour, көзі

8 жауаптар

Файлды кодтауды түрлендірдім:

$data = file_get_contents(PATH_TO_CSV_FILE);
$data = mb_convert_encoding($data, 'UTF-8', 'Windows-1252');
file_put_contents(PATH_TO_MODIFIED_CSV_FILE, $data);

Содан кейін оны үстелге жүктеді:

LOAD DATA INFILE '".PATH_TO_MODIFIED_CSV_FILE."' INTO TABLE ...
4
қосылды
Өзі - шебері. Сіз өз жауабыңызды қабылдай аласыз ба? Сондықтан басқалар бұл мәселені шешетінін біледі.
қосылды автор Joop Eggen, көзі

Файлды кодтауды түрлендірдім:

$data = file_get_contents(PATH_TO_CSV_FILE);
$data = mb_convert_encoding($data, 'UTF-8', 'Windows-1252');
file_put_contents(PATH_TO_MODIFIED_CSV_FILE, $data);

Содан кейін оны үстелге жүктеді:

LOAD DATA INFILE '".PATH_TO_MODIFIED_CSV_FILE."' INTO TABLE ...
4
қосылды
Өзі - шебері. Сіз өз жауабыңызды қабылдай аласыз ба? Сондықтан басқалар бұл мәселені шешетінін біледі.
қосылды автор Joop Eggen, көзі

Файлды кодтауды түрлендірдім:

$data = file_get_contents(PATH_TO_CSV_FILE);
$data = mb_convert_encoding($data, 'UTF-8', 'Windows-1252');
file_put_contents(PATH_TO_MODIFIED_CSV_FILE, $data);

Содан кейін оны үстелге жүктеді:

LOAD DATA INFILE '".PATH_TO_MODIFIED_CSV_FILE."' INTO TABLE ...
4
қосылды
Өзі - шебері. Сіз өз жауабыңызды қабылдай аласыз ба? Сондықтан басқалар бұл мәселені шешетінін біледі.
қосылды автор Joop Eggen, көзі

Тырысу:

LOAD DATA INFILE '".PATH_TO_CSV_FILE."' INTO TABLE tbl_name CHARACTER SET latin1

латын1 сәйкесінше Windows-1252 және CP-1252 сәйкес келеді.

2
қосылды

Тырысу:

LOAD DATA INFILE '".PATH_TO_CSV_FILE."' INTO TABLE tbl_name CHARACTER SET latin1

латын1 сәйкесінше Windows-1252 және CP-1252 сәйкес келеді.

2
қосылды

Қажет болған жағдайда анықтау мен түрлендіру үшін келесі кодты қолданамын:

<?php
# Detect and convert to utf-8
$data = file_get_contents($file_full_path);
if(mb_detect_encoding($str,"UTF-8, ISO-8859-1, Windows-1252") != "UTF-8") {
    $data = mb_convert_encoding($data, 'UTF-8', 'Windows-1252');
    file_put_contents($file_full_path, $data);
}

Бірақ сіз жүктеп жатқан файлдың таңбалар жиынтығын білсеңіз, MySQL пәрменімен бірге құжаттаманы :

character_set_database жүйесінде көрсетілген таңбалар жинағы   айнымалы файлдағы ақпаратты түсіндіру үшін пайдаланылады. SET NAMES   character_set_client параметрі түсіндіруге әсер етпейді   кіріс. Егер кіріс файлы мазмұны таңбалар жиынын пайдаланатын болса   әдепкі бойынша ерекшеленеді, әдетте көрсетуге болады   сипаттың жиынтығы CHARACTER SET сөйлемін қолданып, файлдың   MySQL 5.1.17 нұсқасында қол жетімді. Бинарлық таңбалар жиынтығы «жоқ   түрлендіру. «

Келесі синтаксиспен:

LOAD DATA  INFILE 'file_name' INTO TABLE tbl_name [CHARACTER SET charset_name]
0
қосылды

Қажет болған жағдайда анықтау мен түрлендіру үшін келесі кодты қолданамын:

<?php
# Detect and convert to utf-8
$data = file_get_contents($file_full_path);
if(mb_detect_encoding($str,"UTF-8, ISO-8859-1, Windows-1252") != "UTF-8") {
    $data = mb_convert_encoding($data, 'UTF-8', 'Windows-1252');
    file_put_contents($file_full_path, $data);
}

Бірақ сіз жүктеп жатқан файлдың таңбалар жиынтығын білсеңіз, MySQL пәрменімен бірге құжаттаманы :

character_set_database жүйесінде көрсетілген таңбалар жинағы   айнымалы файлдағы ақпаратты түсіндіру үшін пайдаланылады. SET NAMES   character_set_client параметрі түсіндіруге әсер етпейді   кіріс. Егер кіріс файлы мазмұны таңбалар жиынын пайдаланатын болса   әдепкі бойынша ерекшеленеді, әдетте көрсетуге болады   сипаттың жиынтығы CHARACTER SET сөйлемін қолданып, файлдың   MySQL 5.1.17 нұсқасында қол жетімді. Бинарлық таңбалар жиынтығы «жоқ   түрлендіру. «

Келесі синтаксиспен:

LOAD DATA  INFILE 'file_name' INTO TABLE tbl_name [CHARACTER SET charset_name]
0
қосылды

Қажет болған жағдайда анықтау мен түрлендіру үшін келесі кодты қолданамын:

<?php
# Detect and convert to utf-8
$data = file_get_contents($file_full_path);
if(mb_detect_encoding($str,"UTF-8, ISO-8859-1, Windows-1252") != "UTF-8") {
    $data = mb_convert_encoding($data, 'UTF-8', 'Windows-1252');
    file_put_contents($file_full_path, $data);
}

Бірақ сіз жүктеп жатқан файлдың таңбалар жиынтығын білсеңіз, MySQL пәрменімен бірге құжаттаманы :

character_set_database жүйесінде көрсетілген таңбалар жинағы   айнымалы файлдағы ақпаратты түсіндіру үшін пайдаланылады. SET NAMES   character_set_client параметрі түсіндіруге әсер етпейді   кіріс. Егер кіріс файлы мазмұны таңбалар жиынын пайдаланатын болса   әдепкі бойынша ерекшеленеді, әдетте көрсетуге болады   сипаттың жиынтығы CHARACTER SET сөйлемін қолданып, файлдың   MySQL 5.1.17 нұсқасында қол жетімді. Бинарлық таңбалар жиынтығы «жоқ   түрлендіру. «

Келесі синтаксиспен:

LOAD DATA  INFILE 'file_name' INTO TABLE tbl_name [CHARACTER SET charset_name]
0
қосылды