Что это за символ (Â) и как его удалить с помощью PHP?
Это капитал A с a ^ сверху: Â
Он появляется в строках, вытаскиваемых из веб-страниц. Он отображается там, где ранее было пустое место в исходной строке исходного сайта. Это фактический символ, который хранится в моей базе данных. Это также то, что отображается на моем веб-сайте, когда я повторяю строку, содержащую его.
Я понимаю, что это проблема кодирования символов, когда я изначально обрабатывал веб-страницу, но теперь я застрял с этими символами в своей базе данных. Я должен преобразовать этот символ, когда он отображается, или где-то еще в php, перед выводом html, который его содержит. Я не могу переработать исходные документы.
Я пробовал str_replace() и html_entity_decode() и ничего не делал.
Что еще я должен попробовать?
Ответы
Ответ 1
"Латинская 1" - ваша проблема здесь. На веб-странице доступно около 65256 символов UTF-8, которые нельзя сохранить на кодовой странице Latin-1.
Для вашей непосредственной проблемы вы должны иметь возможность
$clean = str_replace(chr(194)," ",$dirty)
Однако я бы переключил вашу базу данных на использование utf-8 ASAP, так как проблема почти наверняка повторится.
Ответ 2
На самом деле это не один символ и, скорее всего, вызван несогласованностью между кодировкой содержимого и кодировкой браузера. Попробуйте установить кодировку вашей выводимой страницы на то, что вы используете.
например. В разделе вывод:
echo "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>";
(Отрегулируйте UTF-8 тем, что вы используете)
Ответ 3
Это работает для меня:
$string = "Sentence ‘not-critical’ and \n sorting ‘not-critical’ or this \r and some ‘not-critical’ more. ' ! -.";
$output = preg_replace('/[^(\x20-\x7F)\x0A\x0D]*/','', $string);
Ответ 4
Я использую это много
function cleanStr($value){
$value = str_replace('Â', '', $value);
$value = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $value);
return $value;
}
Ответ 5
Использовать коды Bellow
echo "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>";
echo htmlspecialchars_decode($your_string, ENT_QUOTES);
Ответ 6
Эта проблема возникает при использовании другой кодировки в вашей сети.
Чтобы решить эту проблему (используя utf-8 в примерах):
в <HEAD>
вашей страницы добавить charset
:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
В любой форме, которую вы отправляете, добавьте accept-charset
:
<form name="..." method=".." id=".." accept-charset="utf-8">
Если вы используете php + MySQLi для обработки вашей формы, вы должны убедиться, что соединение с базой данных также поддерживает вашу кодировку. Процедурный стиль:
mysqli_set_charset($link, "utf8");
и объектно-ориентированный стиль:
$mysqli->set_charset("utf8")
Ответ 7
На самом деле я должен был иметь все это:
<--!DOCTYPE html-->
<--html lang="en-US"-->
<--head-->
<--meta charset="utf-8"-->
<--meta http-equiv="X-UA-Compatible" content="IE=edge"-->
<--meta name="viewport" content="width=device-width, initial-scale=1"-->
<--meta http-equiv="Content-Type" content="text/html; charset=utf-8/" /-->
Ответ 8
Чтобы удалить символ из строки
mysqli_set_charset ($ жулик, "utf8");
$ price = "250,00";
$ price2 = preg_replace ('/[^ (\ x20-\x7F)] */', '', $ price);
Результат: 250.00
Ответ 9
После того, как строка UTF-8 была обработана как Latin1 или наоборот и после этого неправильно сохранена в файле или базе данных, может быть полезно написать корректирующий фильтр для восстановления исходного символа, а не просто удалить их. Я нашел массив ниже полезным для создания такого фильтра. Однако этот список все еще находится в процессе разработки, так как я обнаружил, что не все "потерянные" символы захвачены. Я с нетерпением жду, чтобы иметь массив, который охватывает все из них.
Помимо этого, если вы обнаружите, что этот "½" в строке является двойным ошибочным символом, он был отображен браузером как несовместимый символ "this", после чего он снова был сохранен. Поэтому "�" не может быть прослежено до его первоначального характера. Но все же полезно знать и находить, где эти персонажи были навсегда потеряны.
array(
'ü'=>'ü',
'ä'=>'ä',
'ö'=>'ö',
'Ö'=>'Ö',
'ß'=>'ß',
'Ã '=>'à',
'á'=>'á',
'â'=>'â',
'ã'=>'ã',
'ù'=>'ù',
'ú'=>'ú',
'û'=>'û',
'Ù'=>'Ù',
'Ú'=>'Ú',
'Û'=>'Û',
'Ü'=>'Ü',
'ò'=>'ò',
'ó'=>'ó',
'ô'=>'ô',
'è'=>'è',
'é'=>'é',
'ê'=>'ê',
'ë'=>'ë',
'À'=>'À',
'Ã'=>'Á',
'Â'=>'Â',
'Ã'=>'Ã',
'Ä'=>'Ä',
'Ã…'=>'Å',
'Ç'=>'Ç',
'È'=>'È',
'É'=>'É',
'Ê'=>'Ê',
'Ë'=>'Ë',
'ÃŒ'=>'Ì',
'Ã'=>'Í',
'ÃŽ'=>'Î',
'Ã'=>'Ï',
'Ñ'=>'Ñ',
'Ã'=>'Ò',
'Ã"'=>'Ó',
'Ã"'=>'Ô',
'Õ'=>'Õ',
'Ø'=>'Ø',
'Ã¥'=>'å',
'æ'=>'æ',
'ç'=>'ç',
'ì'=>'ì',
'Ã'=>'í',
'î'=>'î',
'ï'=>'ï',
'ð'=>'ð',
'ñ'=>'ñ',
'õ'=>'õ',
'ø'=>'ø',
'ý'=>'ý',
'ÿ'=>'ÿ',
'°'=>'°',
'€'=>'€',
'â€"'=>'–',
' '=>' ',
'‘'=>'‘',
'’'=>'',
'“'=>'"',
'†'=>'"'
);
с благодарностью Себастьяну Вьереку за предоставление первого набора потерянных персонажей.