2009-09-16 1 views
4

У меня есть этот персонаж, появляющийся изредка, и я не могу найти его в таблице ascii. Я хотел бы запустить фильтр по данным, прежде чем он будет отправлен в базу данных, но я должен знать, что это такое. Может быть, кто-то может понять меня. Я использую редактор wysiwyg, и это то, откуда он исходит. Характер появляется очень спорадично, но, кажется, появляется чаще, чем нет, когда я делаю два \ r или backspace.Может ли кто-нибудь сказать мне, что это за символ ascii?

Вот персонаж

 

ОК, было предложено, чтобы изменить тип содержимого в utf8 в заголовке документа, но я все еще получаю эти символы в базе данных. Вот тест после того, как я добавил тип содержимого

adf af  aafd a a 

aa a  afa a 

adf 
+0

Похож на ASCII 194. Вы можете выполнить SQL REPLACE, чтобы избавиться от них, используя CHAR (194), который работает как минимум на SQL Server. –

+0

... btw, чтобы понять это, вы можете скопировать и вставить этот текст в шестнадцатеричный редактор и принять к сведению его шестнадцатеричное значение. В Windows я могу использовать программу charmap, чтобы дважды проверить, что шестнадцатеричное значение, которое в этом случае является C2, соответствует показанному символу. –

+4

Нет такой вещи, как ASCII 194. Коды ASCII имеют 7 бит. – balpha

ответ

2

Это "Latin Capitial А с циркумфлексом", HTML код Â Unicode U + 00C2

вики страницы: http://en.wikipedia.org/wiki/%C3%82

+0

Привет, TomatoSandwich, спасибо за это. Это помощь. Похоже, я могу проблему с кодировкой. – 2009-09-16 05:20:45

16

Это весьма вероятно, что этот символ связан с проблемами кодирования UTF-8. Статья Джоэля The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!), безусловно, рекомендуется читать в этом случае.

Фильтрация этих символов перед отправкой в ​​базу данных почти наверняка не то, что нужно сделать здесь.

В случае, о котором вы упоминаете, вы, вероятно, имеете дело с символом U + 00A0, который является символом Unicode для нераспространения. Битовый шаблон для этого персонажа:

1010 0000 

После того, как UTF-8 кодировки, где кодированные байты выглядят как

110x xxxx 10xx xxxx 

где «х» представляет собой битое значение символов Unicode, так что U + 00A0 кодируется как:

1100 0010 1010 0000 

который является 0xC2 0xA0. По совпадению, второй символ - это то же самое значение байта, что и исходный символ, который вы кодировали (U + 00A0), в то время как первый символ - это вид, который вы видите.

+0

Вы никогда не знаете. Я скопировал некоторый код из некоторых ответов stackoverflow, чтобы найти их кружевами с этим символом. –

+0

Спасибо, Грег. Сейчас я иду на ссылку. – 2009-09-16 05:17:58

+0

Грег, эти персонажи набиты по всей моей базе данных. Мне нужно очистить их, если смогу, а затем исправить проблему. – 2009-09-16 05:21:59

0

Я - ОП. Я больше не вошел в систему, но я вернулся, чтобы поделиться этим решением. Проблема была на самом деле проблемой кодирования. Я добавил:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

После того как я это сделал, я заметил, что все еще получаю эти фанки-персонажи в своей базе данных. Затем я изменил кодировку в таблице базы данных и ничего не сделал. Это оставило только браузер ... Я проверил кодировку в браузере и заметил, что он использует ISO-8859-1. Я изменил кодировку в браузере на utf-8, и теперь он работает нормально. :)

Спасибо всем, кто внес свой вклад.

+0

Это потому, что браузер игнорирует '' теги. Вам нужно отправить правильные заголовки http, используя ['header'] (http://www.php.net/header) – troelskn

0

Я думаю, что вы видите ошибку, которую я когда-то испытал. ISO-8859-1 на самом деле является подмножеством Windows-1152 (я думаю, это 1152) для западноевропейских языков. Проблема в том, что браузеры с радостью представляют символы Windows-1152, когда веб-сервер принимает ISO-8859-1. Это означает, что браузер отправляет недопустимые данные ISO-8859-1. Это то, что произошло с моей установкой Windows, по крайней мере. Я видел это поведение как в IE, так и в Firefox.

У меня возникла проблема с редактором wysiwyg, где пользователи вставляли данные из документа Word. Этот документ будет содержать как дефисы, так и тире. Один из персонажей получит поданный штраф. Другой - мусор, потому что этот символ не существует в ISO-8859-1 (я не могу вспомнить, что есть).

. Структура .net, которую мы использовали, не помогла ни тем, ни другим, поскольку она не жаловалась на неправильный символ ISO при преобразовании в unicode.

1

Когда у меня есть эта проблема, исправление, которое работает для меня, основываясь на @ ответ Грега, учитывая, что:

0xC2 = 194, 0xa0 = 160,

В PHP:

$output=str_replace(chr(194).chr(160), "&nbsp;", $html); 

 Это repalces сек с &nbsp; они должны были быть.

Смежные вопросы