PHP Странный символ перед знаком? - PullRequest
1 голос
/ 14 января 2010

По какой-то причине я получаю странный символ Â £ 76756687, когда я набираю знак £ в текстовое поле в моей форме?

Ответы [ 2 ]

7 голосов
/ 14 января 2010

Как вы подозреваете, это проблема кодировки символов - настроена ли страница на использование кодировки UTF-8? (Вы не можете ошибиться с этой кодировкой.) Кроме того, вы, вероятно, захотите кодировать символ решетки на выходе (£)

В качестве примера набора символов (как для страницы формы, так и для электронной почты в формате HTML) вы можете использовать:

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

Тем не менее, есть ли хорошая причина для пользователя вводить символ валюты? Будет ли лучше иметь его в качестве статического текстового элемента или раскрывающегося списка слева от текстового поля? (Не стесняйтесь игнорировать, если я говорю задницу, а вы используете текстовую область произвольной формы или summat.)

4 голосов
/ 14 января 2010

Вы, вероятно, используете UTF-8 в качестве кодировки символов, но неправильно объявляете свои выходные данные. Потому что символ £ (U + 00A3) кодируется в UTF-8 с 0xC2A3. И эта последовательность байтов представляет два символа Â и £ при интерпретации с ISO 8859-1.

Так что вам просто нужно правильно указать кодировку. В PHP вы можете использовать функцию header для установки правильного значения для Content-Type поле заголовка как:

header('Content-Type: text/html;charset=utf-8');

Но убедитесь, что вы вызываете эту функцию перед любым выводом. В противном случае заголовок HTTP уже отправлен, и вы не можете его изменить.

...