2010-12-14 1 views
3

У меня проблемы, и мне было интересно, сможет ли кто-нибудь из вас помочь мне.Ударения, URL-адреса и Firefox

У меня есть мой сайт & DB установлен на utf8. У меня проблема при вводе акцентов в строке запроса. ã превращается в % E3, но если я использую ссылки или формы на странице, он дает % C3% A3 в адресе.

Что я могу сделать?

EDIT: Позвольте мне попытаться прояснить этот бит:

Я пытаюсь использовать акцентированные символы в моих URL (строки запроса), но я с чем-то трудное время получать эту работу через несколько браузеров. Некоторые браузеры, такие как Firefox и IE, выводят переменную кодированную строку в зависимости от того, использую ли я форму на странице или набираю акцентированный символ в адресной строке. Как я уже говорил в моем оригинальный вопрос, ã занесены в форме превращается в % C3% A3 в URL, но если я типа ã в адресной строке браузера изменяется, что % E3 в URL ,

Это усложняет вещи для меня, потому что, если я получаю % E3, то в PHP/html Я получаю неизвестный персонаж (то есть знак алмаза вопроса, правильно?)

Надеется, что это помогает - дайте мне знать в противном случае.

+0

Я отредактировал свой вопрос и просмотрел мои ранее задаваемые вопросы. Благодарю. – RS7

+0

Это все еще не ясно: ни один браузер никогда не выводит URL-адрес, только когда у вас есть форма на HTML-странице. Чтобы что-то произошло, вы должны ввести текст в форму, а затем сервер должен обработать форму, а затем браузер может выбрать другой URL. Так сформулируйте свое разъяснение в форме: 1. Это то, что я делаю. 2. Вот что происходит. 3. Это то, что должно произойти вместо этого. –

+0

@Martin: OP использует метод 'method =" GET "(метод по умолчанию для форм HTML). Будет ли отображаться другой URL-адрес, полностью контролируемый сервером. Сервер может выбрать отправку перенаправления, затем URL-адрес будет изменен на указанный URL-адрес перенаправления сервера, иначе URL-адрес будет только тем, на который был запущен запрос (т. Е. Тот, который указан в атрибуте form 'action', вдоль с представленными значениями в строке запроса для случая, когда метод был «GET»). – BalusC

ответ

6

ã занесены в форме, превращается в% C3% A3 в URL

зависит от вида кодирования, который обычно берется из кодировки страницы, которая содержит форму. %C3%A9 - это правильная форма URL-кодировки UTF-8 в формате ã.

Если я набираю ã в адресной строке, браузер меняет это значение на% E3 в URL-адресе.

Это зависит от браузера. Когда вы не-ASCII символов в URL-адрес в адресной строке:

http://www.example.com/test.p/café?café 

WebKit браузеры кодировать их все как UTF-8:

http://www.example.com/test.p/caf%C3%A9?caf%C3%A9 

, который IMO наиболее правильным, так как на IRI. Однако IE и Opera по историческим причинам используют системную кодировку ОС по умолчанию для кодирования текста, введенного только в строку запроса. Так что на западноевропейскую установку Windows (с помощью кодовой страницы 1252), вы получите:

http://www.example.com/test.p/caf%C3%A9?caf%E9 

Для символов, которые не доступны в кодировке системы, IE и Opera заменяют их ?. Firefox будет использовать системную кодировку, если все символы в строке запроса или UTF-8 в противном случае.

Ужасно и непоследовательно, но тогда пользователям довольно редко приходится вводить строки запроса.

+0

Спасибо за ваш ответ - это то, что я испытываю. Я предполагаю, что я должен изменить URL-адрес на версию без акцента, если пользователь нажимает или решает передать URL-адрес без процентов, который выведен обозреватель. Любые другие альтернативы? Еще раз спасибо. – RS7

+0

Я экспериментировал немного больше, и это действительно заставляет мою голову болеть. Я думал об удалении акцентов, но все методы, которые я пробовал, все еще дают мне заменяющий символ, если я набираю акцентированный символ в URL-адресе. Я заметил, что Google согласен с этим - знаете ли вы, как я могу конвертировать/обрабатывать его? Спасибо. – RS7

+0

. Нажатие на URI не является проблемой, только если пользователь пытается скопировать-вставить IRI с помощью строки запроса, отличной от ASCII, которую вам нужно беспокоиться. Если вы хотите поместить на страницу допустимый URI, он должен быть уже «%» -кодирован: просто напишите '...? Foo = caf% C3% A9' напрямую, используя' rawurlencode() 'на UTF- 8. При загрузке браузер, как правило, отображает необработанную версию в адресной строке. Я бы не стал беспокоиться о том, что пользователи вручную вводят символы в URI. – bobince