Итак, у меня возникла проблема с функцией PHP rawurlencode. Все текстовые поля в нашем веб-приложении, конечно, преобразуются перед обработкой веб-сервером, и для этого мы использовали rawurlencode. Это отлично работает почти со всеми персонажами, которые я нашел, за исключением знака «£». Теперь у наших пользователей нет причин вводить знак фунта, но они могут, поэтому я хочу позаботиться об этом.
Проблема в том, что rawurlencode кодирует знак фунта, введенный на веб-странице, не как% A3, а как% C2% A3. Хуже того, если пользователю не удалось ввести еще один бит важной информации (что приводит к обновлению веб-страницы - проверки выполняются на стороне сервера - и попытаться заполнить поля формы информацией, которую использовал пользователь), тогда, когда % C2 запускается через rawurldecode / encode, он становится Ã? - ака,% C3 ?. И, конечно же, «£» также превращается в другой £!
Итак, что вызывает это? Я предполагаю, что это проблема с кодировкой символов, но я не очень разбираюсь в этих вещах. Я где-то слышал, что могу кодировать £ как & pound вручную, но зачем мне это делать, если база данных может обрабатывать «£» и есть процентное кодирование для знака фунта? Это ошибка в rawurlencode или ошибка, вызванная разными наборами символов?
Спасибо за любую помощь.