Удаление специального символа при импорте данных из Excel

Я импортирую данные из Excel в таблицу данных. Работает нормально. Но в некоторых полях данные импортированы с неизвестным символом "�". Но у excel нет такого характера. Вот мой код.

Я пробовал разными способами. Это мой последний код.

$new_prod_desc = (ucfirst($data[0])." ".ucfirst($data[5])." ".ucfirst($data[1])." ".ucfirst($data[2])); $new_prod_desc = preg_replace("/&#?[a-z0-9]+;/i","",$new_prod_desc);

Спасибо.


person Devpower    schedule 20.02.2013    source источник
comment
Чтобы получить правильное исправление, вам нужно выяснить, какие кодировки используются в Excel и в таблице вашей базы данных.   -  person Álvaro González    schedule 20.02.2013


Ответы (2)


Это не однобайтовый символ, а последовательность UTF-8 ef bf bd:

Из здесь:

U+FFFD  �   ef bf bd    REPLACEMENT CHARACTER

Может быть, это замена еще худшего персонажа?

Если вы просто хотите, чтобы он исчез, вы можете найти и заменить последовательность байтов.

person wallyk    schedule 20.02.2013
comment
когда заменить эти символы? До utf8_decode или после utf8_decode? а также какой я хочу заменить? 'ef bf bd' или 'U + FFFD'? - person Devpower; 20.02.2013
comment
@Devpower: Я бы вообще не использовал utf8_decode(), особенно если вас сейчас нет, и все, что вы получаете, это эти неприятные персонажи. - person wallyk; 20.02.2013
comment
Я понял. Пожалуйста, скажите мне, какой из них я хочу заменить? 'ef bf bd' или 'U + FFFD'? - person Devpower; 20.02.2013
comment
Я нашел персонажа. то есть "Ù". Любая помощь? - person Devpower; 20.02.2013

Сначала убедитесь, что документ Excel находится в коде UTF-8.

Попробуйте добавить функцию

utf8_decode

нравится:

$new_prod_desc = utf8_decode($new_prod_desc);
person Alessandro Minoccheri    schedule 20.02.2013
comment
Эта функция генерирует ISO-8859-1. Это испортит данные, если в базе данных не используется ISO-8859-1. - person Álvaro González; 20.02.2013