Специальные символы и URL-адреса

В настоящее время я работаю над приложением, которое извлекает данные JSON из API сообщества blizzard и анализирует его с помощью PHP. Все работает нормально, пока я не приду к персонажу со специальным персонажем от их имени.

Чтобы вытащить данные символов, мне нужно знать имена их персонажей и область, в которой они включены.

У меня есть имя и область, которые передаются через URL-адрес на страницу символов, и оттуда используют эту информацию, чтобы вытащить символьные данные.

На данный момент мои URL-адреса выглядят так:

http://localhost/guildtree/characters.php?realm=argent-dawn&name=Ankzu 

В этот момент, если я попытаюсь вытащить данные для символа с акцентом, я получаю перенаправление на мою страницу с ошибкой, потому что это не допустимый символ.

Только когда я начал переписывать URL, я обнаружил свою проблему. Я перенаправляюсь на страницу с ошибками, потому что где-то вдоль линии специальные символы заменяются на некоторые действительно неуловимые персонажи.

С моими новыми переписанными URL-адресами следующие работы:

  http://localhost/guildtree/argent-dawn/ankzu 

Однако символ со специальным символом в их имени приводит к сообщению об ошибке.

  http://localhost/guildtree/argent-dawn/notúk 

Результаты в следующем сообщении об ошибке:

"Не обнаружена

Запрошенный URL / guildtree / argent-dawn / notúk не был найден на этом сервере. "

Поскольку вы можете видеть, что ú заменяется на ú, но когда я копирую и вставляю URL-адрес, ú отображается как% C3% BA

Я понимаю, что причина, по которой ú появляется как º, состоит в том, что два байта unicode ú сбрасываются на два байтовых символа ASCII, в результате чего отображается ú.

Я гарантировал, что все мои страницы имеют следующий заголовок:

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

Для того, чтобы мое приложение работало правильно, мне нужны эти специальные символы для правильной отображения, поэтому мне нужно, чтобы ú фактически отображался как ú, не отображался как ú, а фактически был ú или% C3% BA.

Имя персонажа вытягивается из URL-адреса просто так:

 $charName = $_GET['name']; 

Можно ли кодировать $ charName для правильного отображения специальных символов?

Я пробовал все, о чем я мог думать, и искал в Google, но ничего не сработало.

Кроме того, поскольку я использую переписывание URL-адресов, каково было бы правило перезаписи для этих специальных символов?

Вот мое текущее правило перезаписи:

  RewriteRule ^([a-zA-Z0-9_'-]+)/([a-zA-Z]+)$ characters.php?realm=$1&name=$2 [NC] 

Я знаю, что ([a-zA-Z] +) вообще не допускает специальных символов, в настоящее время я работаю над тем, чтобы специальные символы отображались правильно. Если я использую ([a-zA-Z \ ú] +), он будет работать и отображать страницу так, как она должна отображаться. Добавление \ ú к правилу кажется очень плохим способом сделать это и не всегда работает при использовании соответствующего символа для акцентированных символов.

Любая помощь будет принята с благодарностью. Если вам нужна дополнительная информация, пожалуйста, спросите.

Редактировать:

Изменение моего правила перезаписи на нижеследующее позволяет получить информацию в порядке, но создает цикл переадресации для моего CSS.

  RewriteRule ^([a-zA-Z0-9_'-]+)/([^/]+)$ characters.php?realm=$1&name=$2 [NC] 

Например, мой CSS перенаправляется на

 http://localhost/guildtree/css/error 

вместо

 http://localhost/guildtree/css/style2.css 

Обновить:

Через несколько простых тестов:

 $charName = $_GET['name']; $charNameTEST = utf8_encode($charName); 

Будет внесено изменение, но когда я применяю это на своей странице, он все еще говорит:

"Не обнаружена

Запрошенный URL / guildtree / argent-dawn / notúk не был найден на этом сервере. "

Я думаю, что главная проблема теперь связана с перенаправлением URL-адресов, потому что данные JSON можно разбирать отлично, когда у них есть акцентированные символы. Я просто не понимаю, почему он продолжает показывать мне, что он находится на панели guildtree / argent-dawn / notúk в браузере, но продолжает пытаться подтянуть / guildtree / argent-dawn / notúk.